当前位置: 首页 > news >正文

关联子查询

关联子查询是一种依赖外部查询结果的子查询,它的核心特点是:子查询中会引用外部查询的表或字段,因此会针对外部查询的每一行数据,动态执行一次子查询,形成“内外联动”的关系。

关键特点:

  1. 依赖外部查询:子查询的条件中包含外部查询的表字段(如 WHERE 子查询表.字段 = 外部表.字段),无法独立执行。
  2. 逐行执行:外部查询每处理一行数据,子查询就会根据当前行的字段值重新计算一次结果。
  3. 用于“分组内对比”:适合需要基于外部查询的分组(如每个用户、每个类别),动态查询该分组内特定数据的场景。

简单示例:

假设有一张学生成绩表 scores(student_id, subject, score),要查询“每门科目中,分数高于该科目平均分的学生”,可用关联子查询:

SELECT student_id, subject, score
FROM scores s1  -- 外部查询表
WHERE score > (-- 关联子查询:引用外部表的subject,计算当前科目的平均分SELECT AVG(score) FROM scores s2 WHERE s2.subject = s1.subject  -- 子查询依赖外部表的subject
);
  • 外部查询遍历 s1 的每一行(如 (101, 数学, 90));
  • 子查询针对当前行的 subject(数学),计算所有数学成绩的平均分;
  • 外部查询判断当前行的分数是否高于该平均分,符合则保留。

与普通子查询的区别:

  • 普通子查询:独立执行一次,结果固定(如 SELECT * FROM t WHERE id IN (SELECT id FROM t2))。
  • 关联子查询:依赖外部查询,每一行都可能执行一次,结果动态变化。

关联子查询的逻辑直观,但性能可能较低(数据量大时需多次扫描表),适合简单场景;复杂场景建议用窗口函数替代。

例如leetcode的
3421. 查找进步的学生

# -------------关联子查询---------------------------------------
select s1.student_id, s1.subject,s1.score as first_score,s2.score as latest_score
from scores s1 join scores s2  on s1.student_id=s2.student_id and s1.subject=s2.subject
where s1.exam_date=(select min(exam_date) from scores where student_id=s1.student_id and subject=s1.subject)
and s2.exam_date=(select max(exam_date) from scores where student_id=s2.student_id and subject=s2.subject)
and s1.score<s2.score
group by s1.student_id,s1.subject
order by s1.student_id,s1.subject
http://www.gsyq.cn/news/32212.html

相关文章:

  • 20232421 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 应急响应特洛伊挖矿木马
  • 做题记录 #4
  • 代码大全2 第一章 与第二章
  • C++ 获取 const char* 字符串长度
  • 20251027——读后感2
  • DeepSeek-DSA讲解
  • Experiment3
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • CF995F Cowmpany Cowmpensation
  • WPF datagrid mvvm loaded 100M items,prism.wpf,prism.dryioc
  • LLM什么时候才能输出固定格式
  • CF708E Students Camp 题解
  • 每日反思(2025_10_27)
  • HT-083 CSP J/S题解
  • 壁纸收集
  • CF1608F MEX counting 题解
  • 【中份薯条】雷柏MT760鼠标上手改装
  • 第四篇:docker底层原理
  • 【中份薯条】雷柏MT760上手改装
  • PyPDF无限循环漏洞CVE-2025-62707技术分析
  • 题解:luogu P4948 数列求和
  • 详细介绍:论文阅读 (1) :Control Flow Management in Modern GPUs
  • 公众号排版2025年权威推荐:揭秘有一云AI编辑器为何高效?
  • 10 27
  • 同余最短路学习报告
  • 详细介绍:Redis多租户资源隔离方案:基于ACL的权限控制与管理
  • 二分查找边界
  • 学习笔记:重链剖分
  • FRP 后端无法获取请求者IP解决方案