oracle sql查询在第3列匹配第1列和第2列中查找具有多个值的行
我有一个包含大约一百万行和Oracle 11 db的数据集。 我想找到col1和col2匹配的行,但在col3中有不同的值。 我不知道如何做到这一点,虽然我当然可以写似乎永远不会完成查询:oracle sql查询在第3列匹配第1列和第2列中查找具有多个值的行
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);
我跑这一个小时后,放弃了等待 - 我需要分析的问题和现在有些人想知道如何前进。
由于在任何情况下, 杰夫
这样的查询将指示其具有相同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
你的意思是这样?
select col1,col2,col3
from table tab1
where col1 = col2
and col1 <> col3
基本上没有col1和col2和col 3组成一个逻辑键,但col1和col2是一个数据库键 - 一些不良数据得到SQL'D,我想看看问题有多糟糕。所以我想找到在col1和col2中匹配的行,但是在col 3上不匹配 – 2015-02-07 01:33:20
@JeffKish请提供您的数据示例。 – RubahMalam 2015-02-07 01:37:04
嗨。我最终这样做了,但你的回应使我想得更好。谢谢。 选择* 从MYTABLE其中(COL1,COL2)在 ( 选择COL1,COL2从 ( SELECT COL1,COL2,从MYTABLE组COL3由COL1,COL2,COL3 ) 组由COL1,COL2具有计数( *)> 1 ) order by col1,col2; – 2015-02-09 14:38:41