我有一个大约有一百万行的数据集和Oracle 11 db。 我想找到col1和col2匹配但在col3中具有不同值的行。 我不知道如何做得好,虽然我当然可以编写一个似乎永远不会完成的查询:
select col1,col2,col3
from table tab1
where exists
(select 1
from table tab2
where tab1.col1 = tab2.col1
and tab1.col2 = tab2.col2
and tab1.col3 != tab2.col3);
我跑了这个并且在一个小时后放弃了等待 - 我需要分析问题并将其呈现给一些人以确定如何继续前进。
非常感谢, 杰夫
答案 0 :(得分:0)
你的意思是这样吗?
select col1,col2,col3
from table tab1
where col1 = col2
and col1 <> col3
答案 1 :(得分:0)
此类查询将指示col1, col2
中具有相同col3
的哪些行具有不同的值:
SELECT col1, col2
FROM x
GROUP BY col1, col2
HAVING MIN(col3) <> MAX(col3)
要查看有多少col1, col2
对受影响:
SELECT COUNT(*)
FROM (SELECT col1, col2
FROM x
GROUP BY col1, col2
HAVING MIN(col3) <> MAX(col3)
)
您可能还想知道有多少重复项(即col1, col2, col3
相同:
SELECT col1, col2, col3
FROM x
GROUP BY col1, col2, col3
HAVING COUNT(*) > 1