在 SQLite 中,一条完整的 SQL 查询语句的书写顺序是固定的。以下是一些关键字的完整语法结构:

📝 语法执行顺序(重要)

虽然书写顺序是上面的样子,但 SQLite 引擎在底层执行这些语句时,是有严格的先后顺序的。理解这个顺序对你学习 SQL 非常重要:(谐音:发文搞核算排列)

  1. FROM:首先确定你要查询的是哪张表。

  2. WHERE:对表中的原始数据进行第一波过滤(不支持聚合函数)。

  3. GROUP BY:将过滤后的数据按照指定字段进行分组。

  4. HAVING:对分组后的数据进行第二波过滤(通常配合聚合函数如 SUM(), COUNT() 使用)。

  5. SELECT:从处理好的数据中提取出你需要的字段。

  6. ORDER BY:对最终的结果集进行排序。

  7. LIMIT:最后截取指定数量的行数返回。

💡 核心规则与避坑指南:

  • 非必填项: 除了 SELECT 和 FROM 是必须的,其他的子句(WHERE、GROUP BY 等)都是可选的。

  • WHERE 与 HAVING 的区别:WHERE 是在分组前过滤原始行,而 HAVING 是在分组后过滤组。

  • LIMIT 的位置: 在 SQLite 中,LIMIT 必须放在整条语句的最后面。


有HAVING必须 有 GROUP BY,而有GROUP BY 不一定需要HAVING