面试题:SQL 中 select、from、join、where、group by、having、order by、limit 的执行顺序是什么?

在 MySQL 中,SQL 查询的执行顺序与书写顺序不同。以下是 SQL 查询中各个关键字的执行顺序:

  1. FROM: 首先确定查询的数据来源,包括表和可能的连接(JOIN)。
  2. JOIN: 如果有 JOIN 操作,会在 FROM 之后执行,将多个表连接在一起。
  3. WHERE: 对 FROM 和 JOIN 后的结果进行过滤,筛选出符合条件的行。
  4. GROUP BY: 根据指定的列对结果进行分组。
  5. HAVING: 对 GROUP BY 分组后的结果进行过滤,筛选出符合条件的分组。
  6. SELECT: 选择要返回的列,并可以进行计算或聚合操作。
  7. ORDER BY: 对最终的结果集进行排序。
  8. LIMIT: 限制返回的结果集的行数。

执行顺序总结:

  1. FROM
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. ORDER BY
  8. 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;

执行顺序解释:

  1. FROM table1 JOIN table2 ON table1.id = table2.id: 首先从 table1table2 中获取数据,并根据 id 进行连接。
  2. WHERE table1.column3 = ‘value’: 对连接后的结果进行过滤,只保留 column3 等于 'value' 的行。
  3. GROUP BY column1: 根据 column1 对结果进行分组。
  4. HAVING COUNT(column2) > 10: 对分组后的结果进行过滤,只保留 column2 计数大于 10 的分组。
  5. SELECT column1, COUNT(column2) AS count: 选择要返回的列,并计算 column2 的计数。
  6. ORDER BY count DESC: 对最终的结果集按 count 列进行降序排序。
  7. LIMIT 10: 只返回前 10 行结果。

THE END
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容