我遇到了一个问题,我的SQL查询没有选择不符合where语句的元组:
SELECT COUNT(DISTINCT g.genre)
FROM movie m
JOIN genre g ON (m.movie_id = g.movie_id)
WHERE g.genre IN ('Animation', 'Comedy', 'Family')
这将返回电影和我的流派列表之间的常见流派数量。目标是即使没有任何共同点也要返回0。但是,由于不符合WHERE子句要求,该查询将从电影表中跳过这些元组。
任何关于如何重新构造查询以实现我的目标的想法,谢谢。
答案 0 :(得分:2)
跳过WHERE
子句以获取“ 不符合WHERE子句要求的电影表中的那些元组”。而是使用case
表达式进行条件聚合。
SELECT COUNT(DISTINCT case when g.genre IN ('Animation', 'Comedy', 'Family') then g.genre end)
FROM movie m
JOIN genre g ON (m.movie_id = g.movie_id)