【问题标题】:SQL: is there a way to count the number of values from a table if there are none?SQL:如果没有,有没有办法计算表中值的数量?
【发布时间】:2022-01-10 03:15:00
【问题描述】:

所以我有两张表,一张是“电影”(movie,type,lenght),一张是“演员表”(title_movie,id_actor),我必须计算每个演员演过多少“科幻”电影。

我试过了:

SELECT id_actor, Count(type)
FROM Cast, Movies 
WHERE type='SF' and  title_movie=movie
GROUP BY id_actor;

它只显示至少有 1 部 SF 电影的演员,不显示那些有 0 部电影的演员。有什么想法吗?

【问题讨论】:

  • 今日提示:始终使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且如果需要更容易转换为外连接

标签: mysql sql database


【解决方案1】:

LEFT JOIN 获取所有演员。要仅计算 SF 电影,请使用 case 表达式 进行条件聚合

SELECT id_actor, sum(case when type = 'SF' then 1 else 0 end)
FROM Cast
LEFT JOIN Movies ON title_movie = movie
GROUP BY id_actor;

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2023-02-18
    相关资源
    最近更新 更多