mysql: 关键字执行顺序
【参考文章】: Mysql 的SQL关键字执行顺序
【参考文章】: 官方文档:Problems with Column Aliases
1. 执行顺序
- FROM 对要查询的表进行笛卡尔积
如果从A表查询然后关联B,C表, 假如每个表有10条记录,笛卡尔积后就是10x10x10=1000条记录 - ON 根据 on 后面的条件筛选记录
- JOIN 根据join的类型将主表中剩余的记录补充的临时表
- WHERE 根据where条件再筛选记录
- GROUP BY 根据字段进行分组聚合
- HAVING 对分组后的数据进行筛选
- SELECT 进行列筛选
- DISTINCT 对指定字段进行去重
- ORDER BY 按照字段排序
- LIMIT 取出指定的记录
2. alias
使用别名时, 按照上述描述在group by 和 having 后应该无法使用别名,MySQL对此进行了优化
查询时在group by 和 having 时可以使用别名
如果文章对您有所帮助,可以点一下推荐