SQL内功笔记 · 第5篇:SQL逻辑执行顺序

前言

文章旨在系统性地梳理 SQL 查询语句中各个关键子句的逻辑执行顺序。理解这一顺序是编写正确、高效 SQL 的基石,它能帮助你避免常见的逻辑陷阱,并为性能优化提供清晰的思路。下面,我们将按照 FROM → JOIN → ON → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT 的顺序,逐一解析每个环节的作用与要点。


1. FROM

复制代码
确定数据源。先确定数据来源表,先找到主表。

2. JOIN

复制代码
关联表。确定要关联哪些表,再根据 ON 条件匹配。

3. ON

复制代码
连接条件。执行连接条件,哪些记录能关联成功,LEFT JOIN 哪些保留 NULL,INNER JOIN 哪些被过滤。

4. WHERE

复制代码
行过滤。WHERE 是在关联完成后过滤。

5. GROUP BY

复制代码
分组。把多行数据分成多个组。

6. HAVING

复制代码
分组后过滤。

7. SELECT

复制代码
查询列。这里才开始算表达式,算聚合函数,起别名。

8. DISTINCT

复制代码
去重。DISTINCT 是对 SELECT 后的数据去重。

9. ORDER BY

复制代码
排序。排序是很耗性能的操作。可能Using filesort、Using temporary

10. LIMIT

复制代码
分页。最后分页。

注意点

复制代码
ps1:
LEFT JOIN ... WHERE b.id IS NOT NULL 
会把 LEFT JOIN 变成 INNER JOIN。

ps2:
WHERE	分组前
HAVING	分组后

ps3:
别名很多时候,不能在 WHERE 用,但可以在 ORDER BY 用。因为 WHERE 执行时 SELECT 还没执行。

总结

通过本文的梳理,我们深入理解了 SQL 查询语句中各个关键子句的执行顺序及其背后的逻辑。掌握这个顺序对于编写高效、正确的 SQL 至关重要。理解这个顺序,不仅能帮你避免常见的逻辑错误(如错误使用别名或误解 JOIN 行为),更能为 SQL 性能调优打下坚实的基础。

相关推荐
一木 之林6 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
lbb 小魔仙6 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3767 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02147 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川8 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组8 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw348 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
IT_陈寒8 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
泡海椒9 小时前
05-雷达图多维画像-信用评级多维画像
后端
王中阳Go9 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型