Skip to content

复习笔记

约 309 个字 预计阅读时间 1 分钟

SQL

聚合函数不能出现在 WHERE 后面,应该在 HAVING 后面

在中文里:

  1. “把薪水大于1万的人选出来” \(\rightarrow\) 这个“的”,主语是单个人(个体属性)。
  2. “把总人数大于5的部门选出来” \(\rightarrow\) 这个“的”,主语是一群人(集体属性)。

人类觉得这两个“的”一样,但 SQL 不是。

SQL 的工作流水线:写 SQL,顺序是:SELECT -> FROM -> WHERE -> GROUP BY -> HAVING。但数据库执行 SQL 时,它的阅读顺序是完全颠倒的:

  1. FROM(把存数据的档案柜搬过来)
  2. WHERE安检员:挨个检查单张个人简历)
  3. GROUP BY带队长:把通过安检的人,按部门分出小组
  4. HAVING裁判长:审视分组后的整体数据)
  5. SELECT(把最终留下的数据写在报告上)

把你的大脑字典升级一下,把中文里的“的”,强行拆成两个词

  • 凡是能塞进 “XXX(单个人)的...” 句式的 \(\rightarrow\) 归给 WHERE (例如:张三工资、李四性别、王五入职时间)
  • 凡是必须塞进 “XXX们(这帮人)的...” 句式的 \(\rightarrow\) 归给 HAVING (例如:开发部们总人数、销售部们平均业绩、男女生们最高薪资)