【发布时间】:2014-10-12 10:27:40
【问题描述】:
我正在处理两个表的问题。充电和充电历史。我想显示两个表中的选择列,其中 ChargeHistory 中的匹配行与 Charge 具有不同的值和/或日期,或者 ChargeHistory 中根本没有匹配的条目。
我正在使用使用 ansi 标准声明的左外连接,虽然它确实正确显示了存在差异的行,但它没有显示空条目。
我了解到,如果您同时使用 WHERE 子句和 ON 子句,有时可能会出现问题。但是,当我尝试将所有条件放在 ON 子句中时,查询需要的时间太长 > 15 分钟(所以我刚刚取消了运行)。
更糟糕的是,两个表都使用三部分复合键。
有没有人知道为什么空值被遗漏了?
SELECT values...
FROM bcharge charge
LEFT OUTER JOIN chgHist history
ON charge.key1 = history.key1 AND charge.key2 = history.key2 AND charge.key3 = history.key3 AND charge.chargeType = history.chargeType
WHERE charge.chargeType = '2'
AND (charge.value <> history.value OR charge.date <> history.date)
ORDER BY key1, key2, key
【问题讨论】:
-
谢谢大家,看来问题已经解决了:)
标签: sql oracle join outer-join