两个表之间的基本区别

时间:2016-07-11 14:38:45

标签: sql postgresql

我正在尝试postgresql中一个非常基本的差异函数。表1和表2具有相同的列。唯一的区别是表1有一些剩余行。我想只选择剩余行:

SELECT *
FROM   table1
WHERE  NOT EXISTS (SELECT * from table2);

当我知道有剩余行时,上面的查询不会返回任何内容。

2 个答案:

答案 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);