从列表中选择未在查询结果中出现的条目

时间:2015-07-06 10:19:35

标签: sql postgresql postgresql-9.1

我使用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中没有。user_id。我如何了解这3个user_id

请注意,users不是-(BOOL)isPoint:(CGPoint)point insideOfRect:(CGRect)rect { if ( CGRectContainsPoint(rect,point)) return YES;// inside else return NO;// outside }

的主键

1 个答案:

答案 0 :(得分:2)

只有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也会缩放得很差。

详细说明: