2015-02-07 67 views
-1

我有一個包含大約一百萬行和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); 

我跑這一個小時後,放棄了等待 - 我需要分析的問題和現在有些人想知道如何前進。

由於在任何情況下, 傑夫

回答

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

0

你的意思是這樣?

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

相關問題