我正在尝试使用group by语句和子查询来查找所有具有一种以上体裁的所有书籍的输出。但是,它一直返回Subquery returns more than 1 row
。这是我到目前为止的内容:
SELECT title
FROM book
WHERE 1 < (SELECT COUNT(genre) FROM genres GROUP BY book_id);
答案 0 :(得分:3)
这是一个例子:
SELECT b.title
FROM ( SELECT g.book_id
FROM genres g
GROUP
BY g.book_id
HAVING COUNT(1) > 1
) m
JOIN book b
ON b.id = m.book_id
内联视图m
旨在向我们返回在book_id
表中多次出现的genres
值。根据唯一性约束,我们可能要计算genre
HAVING COUNT(DISTINCT g.genre) > 1
如果我们要查找具有三种相关类型的图书:
HAVING COUNT(DISTINCT g.genre) = 3
一旦我们有了book_id
值的列表,就可以加入book
表。 (该查询假定book_id
中的genres
是对id
表中book
列的外键引用。)
答案 1 :(得分:1)
您似乎是一个相关的子查询:
SELECT b.title
FROM book b
WHERE 1 < (SELECT COUNT(*) FROM genres g WHERE g.book_id = b.book_id);
答案 2 :(得分:-2)
SELECT distinct a.title
FROM book a, (select bookid,count(distinct genre)genres from genres group by bookid)b
WHERE a.book_id=b.bookid and b.genres>1
希望有帮助!