gpt4 book ai didi

sql - 矛盾的 Oracle 查询结果

转载 作者:行者123 更新时间:2023-12-04 08:53:06 24 4
gpt4 key购买 nike

我执行两个查询并得到奇怪的结果。我想知道为什么会这样。
现在查询:

SELECT * FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.a = b.a (+)
AND b.c = c.c
AND a.a = 123;

结果为空。
SELECT COUNT(*) FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.a = b.a (+)
AND b.c = c.c
AND a.a = 123;

结果为 1。

它实际上是具有不同返回值的相同查询。
表 A 包含具有 'a' 字段 = 123 的行。
表 B 不包含行 a.a = b.a。

对于同一个查询,如何不返回任何内容或返回 1?

更新:

当我这样做时
SELECT COUNT(*) FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.a = b.a (+)
AND b.c = c.c (+)
AND a.a = 123;

它工作正常。

最佳答案

可能您有与表数据不一致的索引或外键约束。由于这两个查询很可能使用不同的索引,因此它们返回不一致的数据。

您是否暂时禁用了约束,或者在没有验证它们最初是否有效的情况下设置它们 ( ENABLE NOVALIDATE )?

尝试重建索引并删除并重新创建外键约束以查看是否可以解决您的问题。

关于sql - 矛盾的 Oracle 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881769/

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