我怎么能看到in语句中的一些参数与数据库中的一行不匹配



我正在尝试编写一个查询,以便根据电子邮件查找帐户的状态。我可能会得到一个电子邮件地址列表,其中一些对应于一个帐户,而另一些则不对应。我正在尝试这样的声明:

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

这是为了向我显示匹配的所有内容,但当其中一封电子邮件找不到时,它不会向我显示,所以如果没有帐户XYZ@example.com我只能坐两排。当我试图找出哪些论点不匹配时,这会给我带来问题。

您可以使用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

最新更新