select的书写顺序和执行顺序
一、书写顺序(开发者编写顺序)
SELECT:指定要返回的列或表达式
FROM:指定查询的基础表
JOIN:连接其他表(INNER JOIN/LEFT JOIN/RIGHT JOIN等)
WHERE:行级过滤条件
GROUP BY:分组聚合的依据
HAVING:组级过滤条件
ORDER BY:结果排序规则
LIMIT/OFFSET:限制返回行数(可选)
二、执行顺序(数据库引擎处理顺序)
FROM:加载基础表数据
JOIN:执行表连接操作(关键区别:JOIN在FROM之后立即执行)
WHERE:过滤不符合条件的行
GROUP BY:对数据进行分组
HAVING:过滤不符合条件的组
SELECT:投影选择需要的列
ORDER BY:对结果集排序
LIMIT/OFFSET:截取返回结果
三、JOIN子句的关键作用
执行时机:在FROM之后、WHERE之前,决定了哪些行参与后续过滤
数据影响:不同JOIN类型会影响最终参与计算的行数
INNER JOIN:仅保留匹配的行
LEFT JOIN:保留左表所有行,右表无匹配则补NULL
四、对比示意图
五、常见误区提醒
❌ 认为SELECT是最先执行的子句
❌ 在WHERE中使用聚合函数(应使用HAVING)
❌ 忽略JOIN顺序对查询性能的影响
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果