SQL 使用HAVING子句过滤GROUP BY结果
示例
HAVING子句过滤GROUPBY表达式的结果。注意:以下示例使用的是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 ;