2009-02-20 71 views
0

困難放下在的話,那麼假設該例子中的表:SQL查詢來找到非映射列的值

 
| id | col1 | col2 | 
-------------------- 
| 1 | aa | 12 | 
| 2 | aa | 12 | 
| 3 | bb | 13 | 
| 4 | cc | 13 | 

我想,其選擇行的查詢3 & 4或甚至只是數值13

因此,像檢查該假設的:「這是相同的COL2的所有值應該映射COL1的一個值」

我被「按組」做一個檢查和行數在單獨的每一列查詢和比較,但它會很高興能夠挑選出得罪行

查詢或PL/SQL程序將被罰款

回答

5

得到的只是 「13」:

select col2 
from mytable 
group by col2 having count(distinct col1) > 1; 

要獲得行:

select * from mytable where col2 in 
(select col2 
    from mytable 
    group by col2 having count(distinct col1) > 1 
); 
1

如果你想要的基於獨特COL1是COL2,這是它:

SELECT col2 FROM [table] GROUP BY col1 HAVING count(id) = 1; 

如果你想COL2基於獨特的COL1和COL2值,下面應該工作:

SELECT col2 FROM [table] GROUP BY col1, col2 HAVING count(id) = 1; 
+0

接受的答案恰好更適合我的真正的表。不管怎麼說,還是要謝謝你。 – laurie 2009-02-20 14:36:51