0
我正在嘗試postgresql中一個非常基本的差異函數。表1和表2具有相同的列。表1有一些剩餘行。我只想選擇剩餘行:兩個表之間的基本區別
SELECT *
FROM table1
WHERE NOT EXISTS (SELECT * from table2);
上面的查詢在我知道有剩餘行時不返回任何內容。
我正在嘗試postgresql中一個非常基本的差異函數。表1和表2具有相同的列。表1有一些剩餘行。我只想選擇剩餘行:兩個表之間的基本區別
SELECT *
FROM table1
WHERE NOT EXISTS (SELECT * from table2);
上面的查詢在我知道有剩餘行時不返回任何內容。
我認爲你正在尋找except
:
select t1.*
from table1 t1
except
select t2.*
from table2 t2;
注意這兩個表必須具有相同的列數,列都必須是同一類型。您可以查看文檔here。
如果您希望使用NOT EXISTS,您會錯過在where子句中加入表的鍵。試試:
SELECT *
FROM table1 t1
WHERE NOT EXISTS (SELECT * from table2 t2 WHERE t2.id = t1.id);
謝謝。是否爲特定列選擇t1/t2方法?如果我想查看所有列,我是否忽略t1/t2? – ZJAY
@ZJAY不,「table1 t1」表示將'table1'別名爲't1'。 '。*'表示跨所有列。 – RazerM