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

SQL语句返回计数=0,即使未满足WHERE语句,sql,database,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子

我遇到了一个问题,我的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子句的要求


任何关于如何重新构造查询以便实现目标的想法,请提前感谢。

跳过
WHERE
子句以获取“电影表中的那些元组,因为它们不符合WHERE子句要求”。而是使用
大小写
表达式进行条件聚合

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) 

请提供样本数据和预期结果。你的解释很难理解。