SQL 使用HAVING子句过滤GROUP BY结果

示例

HAVING子句过滤GROUP BY表达式的结果。注意:以下示例使用的是Library示例数据库。

例子:

返回写了不止一本书的所有作者(在线示例)。

SELECT
  a.Id,
  a.Name,
  COUNT(*) BooksWritten
FROM BooksAuthors ba
  INNER JOIN Authors a ONa.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 ONb.id= ba.bookid
GROUP BY
  b.Id,
  b.Title
HAVING COUNT(*) > 3    -- equals to HAVING NumberOfAuthors > 3
;