即使未满足WHERE语句,SQL语句返回计数也= 0

时间:2020-04-15 17:17:12

标签: sql database

我遇到了一个问题,我的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子句要求,该查询将从电影表中跳过这些元组。

任何关于如何重新构造查询以实现我的目标的想法,谢谢。

1 个答案:

答案 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)