2012-09-19 170 views
0

我有兩個表,他們通過ID連接,我知道在合同表中有一些列的數據與我的保修表不匹配,即使ID是匹配的。我正在使用下面的查詢,它看起來是否正確?兩個表中的不匹配列

SELECT con.m_warranty_sku_id, 
     con.contract_type, 
     con.program_type, 
     con.underwriter, 
     wsk.m_warranty_sku_id, 
     wsk.contract_type, 
     wsk.program_type, 
     wsk.sku_underwriter 
FROM mdhdba.m_contract con, 
     mdhdba.m_warranty_sku wsk 
WHERE (wsk.m_warranty_sku_id = con.m_warranty_sku_id) 
     AND con.contract_type <> wsk.contract_type 
+0

你應該顯式'JOIN's。 – Kermit

回答

1

是的,它是爲解決方案是正確的,我調整您的查詢,以明確我參加

SELECT con.m_warranty_sku_id, 
     con.contract_type, 
     con.program_type, 
     con.underwriter, 
     wsk.m_warranty_sku_id, 
     wsk.contract_type, 
     wsk.program_type, 
     wsk.sku_underwriter 
FROM mdhdba.m_contract con innerjoin mdhdba.m_warranty_sku wsk 
ON wsk.m_warranty_sku_id = con.m_warranty_sku_id 
WHERE con.contract_type <> wsk.contract_type 
0

上面的查詢無法處理NULL coulmns。如果m_warranty_sku_id的行數多於一行,則會出現問題。

這樣做 1.如果連接有空值,則處理NULL。 2.您可以使用MINUS和UNION子句將不匹配的m_warranty_sku_id和僅用於這些值的連接表分開。