我使用 Postgres 9.1。我正在运行一个类似于
的查询select count(distinct(user_id)) from users where user_id in (11,32,763,324,45,76,37,98,587);
此处 user_id
的列表包含 600 个条目。我得到的结果是 597。因此列表中有 3 个 user_id
,它们不存在于 users
中。我如何知道这 3 个 user_id
?
请注意user_id
不是users
的主键
最佳答案
DISTINCT
只有在 user_id
未定义 UNIQUE
时才有意义。
对于您要求的查询,我们不需要任何一种方式:
SELECT t.user_id
FROM unnest('{11,32,763,324,45,76,37,98,587}'::int[]) t(user_id)
LEFT JOIN users u USING (user_id)
WHERE u.user_id IS NULL;
如果表达式的两边都可以包含 NULL 值,请注意 NOT IN
!具有长值列表的 IN
/NOT IN
的扩展性也很差。
详细信息:
关于sql - 从列表中选择未出现在查询结果中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31243310/