2013-05-30 28 views
1

我需要從tempfinal和標題,所有電子郵件從htc,豌豆如果電子郵件存在。 不確定以下查詢是否正確,因爲它需要更多時間10分鐘才能運行。 使用「和」而不是「或」給我的只有4行這是不correct.Please建議如何獲得列值prefrence在其他表值

SELECT f.email_address, 
     isnull(htc.TITLE, pea.title)   TITLE, 
     isnull(htc.FIRST_NAME, pea.FIRST_NAME) FIRST_NAME, 
FROM #tempFinal F, 
     htc, 
     pea 
WHERE f.EMAIL_ADDRESS = htc.EMAIL_ADDRESS 
     OR f.EMAIL_ADDRESS = pea.EMAIL_ADDRESS 

回答

1

試試這個:

SELECT F.EMAIL_ADDRESS, 
      ISNULL(H.TITLE,P.TITLE) TITLE, 
      ISNULL(H.FIRST_NAME,P.FIRST_NAME) FIRST_NAME 
    FROM #tempFinal F 
    LEFT JOIN htc H 
     ON F.EMAIL_ADDRESS = H.EMAIL_ADDRESS 
    LEFT JOIN pea P 
     ON F.EMAIL_ADDRESS = P.EMAIL_ADDRESS 

你應該停止使用隱式連接,而不是使用顯式ANSI連接。這將幫助你避免意外的笛卡爾產品(我猜這是你目前的問題)

0

我覺得還是條件在where子句中基本上是建立一個交叉連接的情況。

試試這個:

SELECT f.email_address, 
     isnull(htc.TITLE, pea.title)   TITLE, 
     isnull(htc.FIRST_NAME, pea.FIRST_NAME) FIRST_NAME, 
FROM #tempFinal F 
     Left Join htc 
     on f.EMAIL_ADDRESS = htc.EMAIL_ADDRESS 
     Left Join pea 
     on f.EMAIL_ADDRESS = pea.EMAIL_ADDRESS 
相關問題