我有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
答案 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,并仅为这些值连接表。