在 MySQL 中,SQL 查询的执行顺序与书写顺序不同。以下是 SQL 查询中各个关键字的执行顺序:
- FROM: 首先确定查询的数据来源,包括表和可能的连接(JOIN)。
- JOIN: 如果有 JOIN 操作,会在 FROM 之后执行,将多个表连接在一起。
- WHERE: 对 FROM 和 JOIN 后的结果进行过滤,筛选出符合条件的行。
- GROUP BY: 根据指定的列对结果进行分组。
- HAVING: 对 GROUP BY 分组后的结果进行过滤,筛选出符合条件的分组。
- SELECT: 选择要返回的列,并可以进行计算或聚合操作。
- ORDER BY: 对最终的结果集进行排序。
- LIMIT: 限制返回的结果集的行数。
执行顺序总结:
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- LIMIT
示例:
SELECT column1, COUNT(column2) AS count
FROM table1
JOIN table2 ON table1.id = table2.id
WHERE table1.column3 = 'value'
GROUP BY column1
HAVING COUNT(column2) > 10
ORDER BY count DESC
LIMIT 10;
执行顺序解释:
- FROM table1 JOIN table2 ON table1.id = table2.id: 首先从
table1
和table2
中获取数据,并根据id
进行连接。 - WHERE table1.column3 = ‘value’: 对连接后的结果进行过滤,只保留
column3
等于'value'
的行。 - GROUP BY column1: 根据
column1
对结果进行分组。 - HAVING COUNT(column2) > 10: 对分组后的结果进行过滤,只保留
column2
计数大于 10 的分组。 - SELECT column1, COUNT(column2) AS count: 选择要返回的列,并计算
column2
的计数。 - ORDER BY count DESC: 对最终的结果集按
count
列进行降序排序。 - LIMIT 10: 只返回前 10 行结果。
THE END
暂无评论内容