SQL показывает все значения с COUNT в предложении "WHERE IN ()" - PullRequest
0 голосов
/ 24 сентября 2018

У меня следующий запрос:

select postal_code, count(postal_code) as c
from postal_codes
where postal_code in ('A0A 0A1', 'A0A 0A2', 'A0A 0A3', 'A0A 0A4', 'A0A 0B1', 'A0A 1B1', 'A0A 1B2')
group by postal_code

Последние два значения не существуют в базе данных ('A0A 1B1', 'A0A 1B2'), поэтому они не будут отображаться.Я хочу, чтобы они отображались со значением COUNT (), равным 0.

Запрос покажет мне только первые 5 с количеством, равным 1, но мне нужно все 7, с количеством последних двух, чтобыбыть 0.

Возможно ли это?

По сути, у меня есть список значений (с "WHERE IN ()"), которые мне нужно проверить, существуют ли они в базе данных.

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете использовать VALUES построить и сделать LEFT JOIN:

select t.postal_code, count(p.postal_code) as c
from ( values ('A0A 0A1'), ('A0A 0A2'), ('A0A 0A3'), ('A0A 0A4'), ('A0A 0B1'), ('A0A 1B1'), ('A0A 1B2') 
     ) t(postal_code) left join
     postal_codes p
     on p.postal_code = t.postal_code
group by t.postal_code;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...