Mic*_*iao 44 mysql sql group-by aggregate-functions
我有这张桌子:
Movies (ID, Genre)
Run Code Online (Sandbox Code Playgroud)
电影可以有多种类型,因此ID不是特定于类型,它是多对多的关系.我想要一个查询来查找恰好有4种类型的电影总数.我当前的查询是
SELECT COUNT(*)
FROM Movies
GROUP BY ID
HAVING COUNT(Genre) = 4
Run Code Online (Sandbox Code Playgroud)
但是,这会返回一个4的列表而不是总和.如何获得总和而不是列表count(*)?
Mar*_*c B 77
一种方法是使用嵌套查询:
SELECT count(*)
FROM (
SELECT COUNT(Genre) AS count
FROM movies
GROUP BY ID
HAVING (count = 4)
) AS x
Run Code Online (Sandbox Code Playgroud)
内部查询获取具有正好4种类型的所有电影,然后外部查询计算内部查询返回的行数.
SELECT COUNT(*)
FROM (SELECT COUNT(*)
FROM movies
GROUP BY id
HAVING COUNT(genre) = 4) t
Run Code Online (Sandbox Code Playgroud)