SQL语句返回计数=0,即使未满足WHERE语句
我遇到了一个问题,我的sql查询没有选择不符合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子
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)
请提供样本数据和预期结果。你的解释很难理解。