好的,我有一个Books
的表,每本书都有现在相关的2 fileds
:Title
&Author
,如何显示拥有一本以上书籍的作者的书名?我试过
SELECT Title, Author, COUNT(Author) AS Books FROM BOOK
GROUP BY Author HAVING COUNT(Author) >= 2;
但这只给了我每个作者一个标题,作者和作者拥有的书籍的amt。例如
The Sun Also Rises | Hemingway | 2
Foundation | Asimov | 2
等等。
如何解决?子查询也可以使用
像这样使用group_concat
:-
SELECT group_concat(Title) as Title, Author, COUNT(Author) AS Books
FROM BOOK GROUP BY Author HAVING COUNT(Author) >= 2;
运行此查询
您可以在子查询中确定至少有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;
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。