我正在使用PostgreSQL数据库。我希望通过排除另一个表中存在的值来从表中获取列值。
select id from mytable where exclude(select id from another table)
在First table available id:
101,102,103,104,105
在第二个表中可用id:
101104
我想要结果:
102,103,105 (excluded values exist in second table)
如何写查询?
答案 0 :(得分:20)
尝试
select id
from mytable
where id not in (select id from another_table);
或
select id
from mytable
except
select id
from another_table;
答案 1 :(得分:10)
使用LEFT JOIN IS NULL也是一个选项:
SELECT
id
FROM
mytable
LEFT JOIN another_table ON mytable.id = another_table.id
WHERE
another_table.id IS NULL;
答案 2 :(得分:0)
我尝试了“ user554546”中的解决方案。不确定示例中发生了什么,但是我必须选择Distinct,因为一旦在another_table中有两个值,则我的表将显示两次未过滤的值。
所以可以说another_table有
|ID|
|03|
|04|
|06|
main_table拥有
|ID|
|01|
|02|
|03|
|04|
|05|
|06|
执行完查询后,main_table将显示以下
|ID|
|01|
|01|
|01|
|02|
|02|
|02|
|05|
|05|
|05|
似乎可以解决不同的问题,但是有什么主意为什么会这样?