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 
+0

嗨。我最终这样做了,但你的回应使我想得更好。谢谢。 选择* 从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

你的意思是这样?

select col1,col2,col3 
from table tab1 
where col1 = col2 
and col1 <> col3 
+0

基本上没有col1和col2和col 3组成一个逻辑键,但col1和col2是一个数据库键 - 一些不良数据得到SQL'D,我想看看问题有多糟糕。所以我想找到在col1和col2中匹配的行,但是在col 3上不匹配 – 2015-02-07 01:33:20

+0

@JeffKish请提供您的数据示例。 – RubahMalam 2015-02-07 01:37:04