mysql - COUNT 未返回预期值

标签 mysql count

鉴于我的表之间存在以下关系:enter image description here

我需要显示只有两名主演的电影的名称,例如“Seconday”。

SELECT act.cod_film,
(SELECT COUNT(act.cod_film) FROM film, act WHERE act.starring like 
'Seconday' and act.cod_film=film.cod_film) as namecounter
FROM act;

这总是返回具有“第二” Actor 的电影,但计数始终是相同的数字。我需要每部电影中“第二” Actor 的数量。

如有任何帮助,我们将不胜感激

最佳答案

这将找到具有 2 个“次要” Actor 的电影

SELECT act.cod_film
FROM act
GROUP BY act.cod_film
HAVING SUM(CASE WHEN act.starring like = 'Seconday' THEN 1 ELSE O END) = 2

您可以在这样的子查询中使用它(或以许多其他可能的方式)

SELECT *
FROM FILMS
WHERE cod_film IN (
                  SELECT act.cod_film
                  FROM act
                  GROUP BY act.cod_film
                  HAVING SUM(CASE WHEN act.starring like = 'Seconday' THEN 1 ELSE O END) = 2
                  )

或者:您可以在联接中使用这种方式

SELECT *
FROM FILMS
INNER JOIN (
           SELECT act.cod_film, COUNT(*) NUM_OF
           FROM act
           GROUP BY act.cod_film
           HAVING SUM(CASE WHEN act.starring like = 'Seconday' THEN 1 ELSE O END) = 2
           ) A ON FILMS.cod_film = A.cod_film

注释:

  1. like 需要使用通配符才有效,请勿将 equals 替换为 like 它们不是同一事物
  2. 如果您想要最小值,您可以将 = 调整为 >=,如 sum(case...) >= 2 2名次要 Actor

关于mysql - COUNT 未返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52655705/

相关文章:

android - 保持计时器在后台滴答作响

mysql - SQL 查询 - 通过基于两个外键的重复条目生成结果

php - 如何在 Prestashop 1.5 中过滤/自定义搜索模块?

mysql - DB 导入已取消 : "Cannot add foreign key constraint"

mysql - 终止了 Amazon Linux 中的 'mysqld' 进程 - 一切似乎都正常,真的吗?

c# - Entity Framework 中的分组和计数

Mysql 按两列进行分组,其中条件为第三列的最大日期

javascript - 如何计算某个名字出现的次数?

javascript - Javascript 中的复选框

mysql:每天获取过去 365 天的所有数据计数