Postgresql

使用 LEFT 表中的所有記錄創建結果集,並從 RIGHT 表中僅帶來左側已不存在的記錄

  • May 13, 2020

我在想辦法讓這個 JOIN 工作時遇到了一些麻煩。

Postgres 11.5

我有兩張桌子:

表 1:

customer_id

日期

(其他各種欄位)

表2:

customer_id

日期

(其他各種欄位)

這些表不一樣,但 customer_id 和日期的格式相同,因此可以加入。

我正在嘗試創建一個結果集,其中包含兩個組合在一起的表(所有列),但應用了以下邏輯:

表 1 中的所有數據

僅表 2 中不存在於表 1 中的記錄

在 customer_id 和 date 上加入

我的最終目標是嘗試使用此結果集創建堆積面積圖,但在某些情況下,客戶可能同時出現在表 1 和表 2 中,因此對於某一天,如果存在這樣的人,我不想重複計算那個人。

感謝幫助!

假設所有列都兼容:

SELECT * from table1
UNION ALL
SELECT table2.* from table2 left join table1 using (customer_id, date)
   where table1.customer_id is null

如果不是所有列都兼容,您將不得不對選擇列表進行一些繁瑣的操作,而不是使用*.

引用自:https://dba.stackexchange.com/questions/267035