是否可以返回WHERE IN查询的缺失值

我想做一些数据验证。我有一个sender_id和Receiver_id。我想验证我收到的每个ID是否有效。我试图避免循环返回的查询和要比较的列表。

我有一个包含主要ID列,名称等的users表。

发送消息时,我要抓取发送者和接收者ID,将它们放入数组中,然后按以下方式查询数据库:

SELECT id FROM users WHERE id IN (1,999);

在我的测试案例中,我知道id 999不存在。

我想做的是进行IN查询(或使之成为可能的查询),并使其返回999而不是1-如果两者都存在,则什么都不做。这可能吗?

sunsung1 回答:是否可以返回WHERE IN查询的缺失值

改为使用VALUES子句:

select *
from (values(1),(999)) my_ids(my_id)
where my_id not in (select id from users)
order by my_id;

演示:https://dbfiddle.uk/?rdbms=postgres_8.4&fiddle=e0d88e36be9c42addf6a0c6357558bf7

,

那又怎么样:

select 999
from users
where id = 1;

如果用户存在,它将返回999。如果没有,将没有结果。

本文链接:https://www.f2er.com/3168687.html

大家都在问