使用 HAVING 子句过滤 GROUP BY 结果
HAVING 子句过滤 GROUP BY 表达式的结果。注意:以下示例使用 Library 示例数据库。
例子:
返回所有撰写多本书的作者( 实例 )。
SELECT
a.Id,
a.Name,
COUNT(*) BooksWritten
FROM BooksAuthors ba
INNER JOIN Authors a ON a.id = ba.authorid
GROUP BY
a.Id,
a.Name
HAVING COUNT(*) > 1 -- equals to HAVING BooksWritten > 1
;
归还所有拥有三位以上作者的书籍( 实例 )。
SELECT
b.Id,
b.Title,
COUNT(*) NumberOfAuthors
FROM BooksAuthors ba
INNER JOIN Books b ON b.id = ba.bookid
GROUP BY
b.Id,
b.Title
HAVING COUNT(*) > 3 -- equals to HAVING NumberOfAuthors > 3
;