gpt4 book ai didi

sql - Oracle左外连接,只需要空值

转载 作者:行者123 更新时间:2023-12-02 04:28:12 25 4
gpt4 key购买 nike

我正在解决两个表的问题。充电和充电历史记录。我想显示两个表中的一系列列,其中 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

最佳答案

您可能想要显式选择空值:

 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 history.value is null) OR (charge.date <> history.date or history.date is null))
ORDER BY key1, key2, key

关于sql - Oracle左外连接,只需要空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25381422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com