Select
從表1、表2中選擇行,然後根據ID進行選擇
我正在處理一個大型數據集,因此遇到了一些問題。
我有一個數據集,如:
表格1
State ID Conditional_Value AZ 1 Yes AZ 2 Yes AZ 5 Yes
表 2
State ID Conditional_Value AZ 1 No AZ 3 No AZ 7 No
我需要這個返回的是
State ID Conditional_Value AZ 1 Yes AZ 2 Yes AZ 3 No AZ 5 Yes AZ 7 No
如果表 2 中有重複的 ID,則從表 1 中獲取該 ID 的行並選擇它。
我試過了
Select State, ID, Conditional_Value From Table1 Union Select State, ID, Conditional_Value From Table2 Where Table2.ID not in (select Table1.ID from Table1)
但是對於我擁有的大型數據集,執行起來太昂貴了。
我已經查看了有關查找重複項並刪除它們然後將非重複項插入另一個表的問題,但我還需要比較這兩個單獨的表。
如果需要更多資訊,請告訴我。謝謝!
雖然您似乎已經滿意地解決了這個問題,但經典的解決方案是使用
FULL OUTER JOIN
:SELECT COALESCE(t1.State, t2.State) as State ,COALESCE(t1.ID, t2.ID) as ID ,COALESCE(t1.Conditional_Value, t2.Conditional_Value) as Conditional_Value FROM Table1 t1 FULL OUTER JOIN Table2 t2 ON ( t1.State = t2.State AND t1.ID = t2.ID)
注意:程式碼未經測試,並且我沒有專門使用 teradata,因此可能存在一些我無法預測的語法問題。但是,據我所知,基本命令和功能應該是正確的。
程式碼根據
State
和ID
值合併兩個表。這些COALESCE
函式確保無論哪個表具有特定行的值,這就是將要使用的值。因為我們Table1
首先看,如果兩者都有Table1
和Table2
的值Conditional_Value
,Table1
則將使用 from 的值。