2016-07-11 153 views
0

我正在嘗試postgresql中一個非常基本的差異函數。表1和表2具有相同的列。表1有一些剩餘行。我只想選擇剩餘行:兩個表之間的基本區別

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

上面的查詢在我知道有剩餘行時不返回任何內容。

回答

4

我認爲你正在尋找except

select t1.* 
from table1 t1 
except 
select t2.* 
from table2 t2; 

注意這兩個表必須具有相同的列數,列都必須是同一類型。您可以查看文檔here

+0

謝謝。是否爲特定列選擇t1/t2方法?如果我想查看所有列,我是否忽略t1/t2? – ZJAY

+1

@ZJAY不,「table1 t1」表示將'table1'別名爲't1'。 '。*'表示跨所有列。 – RazerM

0

如果您希望使用NOT EXISTS,您會錯過在where子句中加入表的鍵。試試:

SELECT * 
FROM table1 t1 
WHERE NOT EXISTS (SELECT * from table2 t2 WHERE t2.id = t1.id);