SQL Количество возвращаемых операторов = 0, даже если оператор WHERE не выполняется - PullRequest
1 голос
/ 15 апреля 2020

Я столкнулся с проблемой, когда мой запрос 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') 

Это вернет число общих жанров между mov ie и мой жанровый список. Цель состоит в том, чтобы вернуть 0, даже если в этом нет ничего общего. Однако запрос пропустит эти кортежи из таблицы mov ie, так как они не соответствуют требованиям предложения WHERE.

Любые идеи о том, как восстановить свой запрос, чтобы я мог достичь своей цели, заранее спасибо.

1 Ответ

2 голосов
/ 15 апреля 2020

Пропустите предложение WHERE, чтобы получить " эти кортежи из таблицы mov ie, поскольку они не соответствуют требованиям предложения 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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...