好的,我有一张Books
的表格,每本书都有2 fileds
现在很有意思:Title
& Author
,如何显示拥有1本以上图书的作者的图书标题?我试过了
SELECT Title, Author, COUNT(Author) AS Books FROM BOOK
GROUP BY Author HAVING COUNT(Author) >= 2;
但这只给了我每位作者1个作者,作者和作者所拥有的书籍。 e.g
The Sun Also Rises | Hemingway | 2
Foundation | Asimov | 2
等等。
如何解决?可以使用Subquerys
答案 0 :(得分:3)
像这样使用group_concat
: -
SELECT group_concat(Title) as Title, Author, COUNT(Author) AS Books
FROM BOOK GROUP BY Author HAVING COUNT(Author) >= 2;
答案 1 :(得分:1)
您可以在子查询中确定至少有2本书的作者,然后获取他们的书籍列表:
SELECT book.Title, book.Author
FROM book
INNER JOIN (SELECT Author FROM BOOK GROUP BY Author HAVING COUNT(Author) >= 2) t
ON book.Author=t.Author;
答案 2 :(得分:0)
SELECT b.title,b.author,c.cnt FROM books AS b INNER JOIN
(SELECT author,COUNT(*) AS cnt FROM books GROUP BY author) AS c
ON b.author = c.author
WHERE c.cnt > 1;
适用于任何数据库系统,而不仅仅是mysql。