0

我有 2 个表,它们由 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 
4

2 回答 2

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 
于 2012-09-19T17:17:05.397 回答
0

上面的查询不能处理 NULL 列。如果 m_warranty_sku_id 不止一行,也会带来麻烦。

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

于 2012-09-19T18:21:56.653 回答