Как я могу увидеть, что некоторые аргументы из моего оператора in не соответствуют строке в базе данных? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь написать запрос, в котором я могу найти статус учетной записи на основе электронной почты. Вполне возможно, что я получу список адресов электронной почты, где некоторые будут соответствовать учетной записи, а другие нет. Я пытаюсь сделать следующее заявление:

select * from accounts where email address in 
(
'abc@example.com',
'123@example.com',
'XYZ@example.com',
)

Это работает, чтобы показать мне все, где есть совпадение, но не показывает, когда одно из этих писем не найдено, поэтому, если не было аккаунта для XYZ@example.com Я бы получил только два ряда. Это вызывает у меня проблемы с длинным списком аргументов, когда я пытаюсь выяснить, какие из них не совпадают.

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать left join:

select v.email, . . .
from (values ('abc@example.com'), ('123@example.com'), ('XYZ@example.com')
     ) v(email) left join
     accounts a
     on a.email = v.email;

Если вы хотите, чтобы те, у которых не было совпадений, добавьте where a.email is null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...