2016-12-26 34 views
0

有兩個表獲取記錄存在於一個表而不是在其他基於多個條件

A(UCID,CREATE_DATE,Av_ID,Phone_No)

B(UCID,CREATE_DATE,Av_ID,Phone_No)

我需要首先基於UCID獲取存在於A中但不在B中的記錄,之後有可能在B中沒有捕獲UCID(在這種情況下,UCID將爲空) 因此提取記錄在A不在B中,基於其餘三列(Create_Date,Av_ID,Phone_No)。

我做了什麼至今

SELECT A.* INTO #TEMP FROM A LEFT JOIN B WHERE B.UCID IS NULL 
SELECT A.* FROM #temp JOIN B on A.CREATE_DATE= B.CREATE_DATE WHERE A.PHONE_NO=B.PHONE_NO AND A.AV_ID=B.AV_ID 

由於有大量的記錄,因此正在採取大約8分鐘來執行,所以,如果有任何方式使用單一加入或不使用做同樣的臨時table..please幫助

回答

1

單查詢

SELECT A.* 
FROM A 
    LEFT JOIN B on (A.UCID = B.UCID) or 
     (B.UCID IS NULL AND A.CREATE_DATE= B.CREATE_DATE AND A.PHONE_NO=B.PHONE_NO AND A.AV_ID=B.AV_ID) 
WHERE B.UCID IS NULL 
+0

做工精細與條件,其中B.Create_Date爲空.. Thanku – Soniya

相關問題