MySQL 中 SQL 查询语句的执行顺序
在 MySQL 中,SQL 查询的执行顺序通常按照以下顺序进行:
- FROM:从指定的表中选择数据。
- WHERE:对数据进行筛选,只选择满足条件的行。
- GROUP BY:按照指定的列对数据进行分组。
- SELECT:选择要返回的列或表达式。
- HAVING:对分组后的数据进行筛选,只选择满足条件的分组。
- UNION [ALL]
- ORDER BY:对结果进行排序。
- LIMIT:限制返回的行数(也称offset)。
请记住,这是一般情况下的执行顺序,并不一定适用于所有情况。优化器可能会根据查询的具体条件和表的索引情况进行优化,改变执行顺序以提高性能。
根据上面介绍的 select 与 having 的顺序,下面①中的分组语句是正确的, 它等同于 ②。① select enterprise_id, count(*) as total from enterprise_agreement group by enterprise_id having total > 10② select enterprise_id, count(*) as total from enterprise_agreement group by enterprise_id having count(*) > 10