gpt4 book ai didi

sql - 在没有大型自连接的情况下查找具有不匹配值的行集?

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

我有一个这样的表(基本示例,不是真实的):

FKEY  | NAME  | ATTRIBUTE_X
--------------------------
1 '...' 42
1 '...' 42
1 '...' 42
2 '...' 7
2 '...' 7
5 '...' 42
5 '...' 42
5 '...' 42
5 '...' 42
6 '...' 300
6 '...' 300
....

其中 - 通常 - 给定 fkey 的每个 attribute_x 值都是相同的。 (在我的真实数据中,我从表中的某些列计算 attribute_x,并且对于具有相同 fkey 的所有行,此属性需要相同。

现在我有一些行没有这个属性。我想搜索整个表以查找具有不匹配的 attribute_x 值的所有 FKEY。

例子:

--------------------------
145678973 '...' 23
145678973 '...' 22 // Error, should also be 23
145678973 '...' 23

我天真的做法是:

SELECT distinct(TX1.FKEY)
FROM TABLEX TX1, TABLEX TX2
WHERE TX1.FKEY=TX2.FKEY
AND TX1.ATTRIBUTE_X <> TX2.ATTRIBUTE_X
;

但是对于我的真实数据,这还没有完成(我运行了临时表空间,在 DBA 将临时表空间增加到 20 GIG 之后,查询运行了几个小时,然后退出。)

一般来说,有没有更高效的查询?


我有一个 PL/SQL 解决方案,我只是循环遍历按 FKEY 排序的表,如果我发现不同的 attribute_x 与 fkey 保持不变的最后获取的记录,我发现了一个错误的 fkey。

但这看起来太原始了 :-) 是否有高效的纯 SQL 解决方案?

最佳答案

最简单的方法:

select fkey
from tablex
group by fkey
having count(distinct attribute_x) > 1

关于sql - 在没有大型自连接的情况下查找具有不匹配值的行集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259810/

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