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

大数据学习(108)-子查询

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


相关子查询会针对外层查询的每一行单独执行,而不是一次性完成所有子查询操作。

这意味着子查询的执行次数等于外层查询表的行数。

SQL语句

SELECT department_name
FROM departments d
WHERE 5 < (SELECT COUNT(*)FROM employees eWHERE d.department_id = e.department_id
);

执行过程

  1. 外层查询逐行处理

    • 外层查询从 departments 表中逐行读取数据,每次处理一个部门。

    • 每次处理时,d.department_id 是当前行的部门ID,d.department_name 是当前行的部门名称。

  2. 子查询针对当前行执行

    • 对于外层查询的每一行(即每个部门),子查询都会被触发并执行。

    • 子查询的作用是统计与当前部门(d.department_id)匹配的员工数量

      SELECT COUNT(*)
      FROM employees e
      WHERE d.department_id = e.department_id
    • 子查询的结果是一个数字,表示当前部门的员工数量。

  3. 条件判断

    • 外层查询的 WHERE 子句会检查子查询返回的员工数量是否大于5

      WHERE 5 < (子查询的结果)
    • 如果条件满足,则将当前部门的 department_name 添加到结果集中。

  4. 重复上述步骤

    • departments 表中的每一行重复上述步骤,直到所有部门都被处理完毕。

关键点:相关子查询

  • 相关子查询是指子查询中引用了外层查询的表(在这个例子中是 d.department_id)。

  • 相关子查询会针对外层查询的每一行单独执行,而不是一次性完成所有子查询操作。

  • 这意味着子查询的执行次数等于外层查询表的行数。

示例执行过程

假设 departments 表中有3个部门,执行过程如下:

  1. 处理第一个部门(department_id = 1

    • 子查询统计部门1的员工数量

      SELECT COUNT(*)
      FROM employees e
      WHERE e.department_id = 1

      假设结果是3。

    • 判断条件 5 < 3 不满足,部门1的名称不会被选中。

  2. 处理第二个部门(department_id = 2

    • 子查询统计部门2的员工数量

      SELECT COUNT(*)
      FROM employees e
      WHERE e.department_id = 2

      假设结果是2。

    • 判断条件 5 < 2 不满足,部门2的名称不会被选中。

  3. 处理第三个部门(department_id = 3

    • 子查询统计部门3的员工数量

      SELECT COUNT(*)
      FROM employees e
      WHERE e.department_id = 3

      假设结果是6。

    • 判断条件 5 < 6 满足,部门3的名称会被选中。

最终结果

最终结果是所有满足条件(员工数量大于5)的部门名称。

总结

  • 子查询的执行时机:子查询是在外层查询的每一行上动态执行的,而不是先独立完成所有子查询操作。

  • 相关子查询的特点:子查询中引用了外层查询的表,因此每次执行时都会根据外层查询的当前行进行计算。

  • 执行顺序:外层查询逐行处理,每行触发一次子查询,然后根据子查询的结果判断是否满足条件。

相关文章:

  • #苍穹外卖#(day3-4)
  • Verilog的整数除法
  • 【FPGA】——DDS信号发生器设计
  • 单位门户网站被攻击后的安全防护策略
  • P12130 [蓝桥杯 2025 省 B] 移动距离
  • Python Django基于协同过滤算法的招聘信息推荐系统【附源码、文档说明】
  • 深入解析TCP Keep-Alive机制:原理、作用与最佳实践
  • SSM考研助手管理系统
  • 基于MFC 的链接库
  • vue项目打包部署到maven仓库
  • 如何针对游戏、金融行业定制CC攻击防护规则?
  • 如何配置环境变量HADOOP_HOMEM、AVEN_HOME?不配置会怎么样
  • RCEP框架下eBay日本站选品战略重构:五维解析关税红利机遇
  • java使用 ​Stream 流对自定义对象数组去重的
  • 欧拉服务器操作系统安装MySQL
  • Ollama、vLLM、LMDeploy选型指南
  • 什么是ETF跟踪误差?场内基金佣金最低是多少?
  • 批量将不同位置的多个文件复制到一个文件夹
  • Oracle查询大表的全部数据
  • JDBC 初认识、速了解
  • 金融监管总局:支持将上海打造成具有国际竞争力的再保险中心
  • 广东江门公布“小客车坠海致3死”事故评估报告,司机被判三年缓五年
  • 外卖江湖战火重燃,骑手、商家、消费者在“摇摆”什么?
  • 新“出差三人组”亮相!神二十乘组简历来了
  • “听公交时听一听”,上海宝山街头遍布“有声图书馆”
  • 电子产品已拆封,还能申请“七天无理由退货”吗?上海法院这样判