两个表中的非匹配列

时间:2012-09-19 17:11:00

标签: sql

我有2个表由ID加入,我知道在Contract表中有一些列的数据与我的保修表不匹配,即使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 

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

以上查询无法处理NULL coulmns。如果m_warranty_sku_id存在多行,则会产生麻烦。

这样做 1.如果连接为空值,则仅处理NULL。 2.您可以使用MINUS和UNION子句分离出不匹配的m_warranty_sku_id,并仅为这些值连接表。