Select 个列表中未出现在查询结果中的条目

Select entries from a list that do not occur in the query result

我使用 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;

当心 NOT IN 如果 NULL 值可以包含在表达式的两边! IN / NOT IN 长值列表的扩展性也很差。

详情: