我正在尝试postgresql中一个非常基本的差异函数。表1和表2具有相同的列。唯一的区别是表1有一些剩余行。我想只选择剩余行:
SELECT *
FROM table1
WHERE NOT EXISTS (SELECT * from table2);
当我知道有剩余行时,上面的查询不会返回任何内容。
答案 0 :(得分:4)
我认为您正在寻找except
:
select t1.*
from table1 t1
except
select t2.*
from table2 t2;
请注意,这两个表必须具有相同的列数,并且列必须都是相同的类型。您可以查看文档here。
答案 1 :(得分:0)
如果您希望使用NOT EXISTS,那么您错过了在where where子句中加入表格的密钥。尝试:
SELECT *
FROM table1 t1
WHERE NOT EXISTS (SELECT * from table2 t2 WHERE t2.id = t1.id);