mysql计数组由

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种类型的所有电影,然后外部查询计算内部查询返回的行数.


Con*_*rix 6

SELECT COUNT(*) 
FROM   (SELECT COUNT(*) 
        FROM   movies 
        GROUP  BY id 
        HAVING COUNT(genre) = 4) t
Run Code Online (Sandbox Code Playgroud)