我正在尋找組合兩個表的最佳方式,該方式將洗掉基于電子郵件的重復記錄,優先使用“表 2”中的值替換任何重復項,我已經考慮過完全外連接和 UNION ALL 但Union all會太大,因為每個表有幾個 1000 列。我想創建這個組合表作為我的完整參考表并保存為一個視圖,這樣我就可以參考它,而不必總是在我已經很復雜的陳述句中添加聯合或其他東西。根據我的理解,完整的外連接不一定會洗掉重復項。我想要:
一種。使用兩個表中的所有列創建表(不適用于一個表中的記錄的欄位將只有空值)
灣 根據電子郵件欄位從此主表中洗掉重復記錄,但只洗掉表 1 記錄并保留表 2 重復,因為它們具有我想要的資訊
C。左連接將不起作用,因為兩個表都有我想保留的唯一記錄,我希望從每個表中保留所有 1000 多列
我什至不知道這有多可行,但非常感謝您的任何答案!
uj5u.com熱心網友回復:
如果我正確理解您的問題,您想加入兩個包含數千列的大表,這些表(希望)在兩個表之間使用電子郵件列作為連接條件并用表 2 中的記錄替換兩個表之間的重復記錄.
幾天前我不得不做類似的事情,所以也許您可以根據自己的目的修改我的查詢:
WITH only_in_table_1 AS(
SELECT *
FROM table_1 A
WHERE NOT EXISTS
(SELECT * FROM table_2 B WHERE B.email_field = A.email_field))
SELECT * FROM table_2
UNION ALL
SELECT * FROM only_in_table_1
如果表之間的列/欄位不同,您可以使用完整的外連接only_in_table_1和table_2
uj5u.com熱心網友回復:
嘗試在兩個表之間使用 FULL OUTER JOIN,然后在每個結果集列上使用 COALESCE 函式來確定結果集列是從哪個表/列填充的
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/374318.html
上一篇:LEFTJOINONNULLKeyValues結合GROUPBY
下一篇:MySQL從另一個表加入多個ID
