所以我正在创建一个有(标题,制作人,流派)的电影表,我必须返回制作至少1个动作片和1个惊悚片的制片人。 我怎么能这样做?
这是我尝试的代码,但它返回所有制作超过2部电影的制作人:
SELECT M.Producer
FROM Movies M
GROUP BY M.Producer, M.Genre
HAVING count(M.Genre = 'Action' and M.Genre = 'Thriller') >= 2;
答案 0 :(得分:1)
SELECT M.Producer
FROM Movies M
GROUP BY M.Producer
HAVING SUM( IF(M.Genre = 'Action', 1, 0) ) > 0
and SUM( IF(M.Genre = 'Thriller', 1, 0) ) > 0;
答案 1 :(得分:1)
您的选择应该从您尝试获取的内容开始 - 生产者数据。一种方法:
SELECT P1.ProducerName --, other fields here
FROM Producers P
WHERE EXISTS (SELECT 1 FROM Movies M1 WHERE M1.Producer = P.Producer AND M1.Genre = 'Action')
AND EXISTS (SELECT 1 FROM Movies M2 WHERE M2.Producer = P.Producer AND M2.Genre = 'Thriller')
在这种情况下可以使用 EXISTS
,因为您希望最小数量为1.如果需要超过1,则需要2 <= (SELECT COUNT(...) ...) can be used
。