SQL 中分组过滤与多表连接的使用指南
1. 使用 HAVING 子句过滤分组
HAVING 子句与 WHERE 子句类似,WHERE 子句用于筛选 SELECT 查询返回的行,而 HAVING 子句用于筛选 GROUP BY 子句生成的分组。HAVING 子句具有以下重要特性:
- HAVING 子句位于 GROUP BY 子句之后,ORDER BY 子句之前。
- 如同 WHERE 子句限制 SELECT 显示的行数,HAVING 子句限制 GROUP BY 显示的分组数。
- WHERE 搜索条件在分组操作之前应用,而 HAVING 搜索条件在分组操作之后应用。
- HAVING 语法与 WHERE 语法相似,但 HAVING 可以包含聚合函数。
- HAVING 子句可以引用 SELECT 列表中出现的任何项目。
WHERE、GROUP BY 和 HAVING 子句的应用顺序如下:
1. WHERE 子句过滤 FROM 和 JOIN 子句指定操作产生的行。
2. GROUP BY 子句对 WHERE 子句的输出进行分组。
3. HAVING 子句从分组结果中过滤行。
以下是一些使用 HAVING 子句的示例:
- 示例 1:列出撰写三本或更多书籍的作者及其撰写书籍的数量
SELECT
au_id,
COUNT(*) AS "num_books"
FROM title_authors
GROUP BY au_id
HAVING COUNT(*) >=
超级会员免费看
订阅专栏 解锁全文
4191

被折叠的 条评论
为什么被折叠?



