2015-10-01 162 views
0

我有大量的數據。爲了解釋這一問題,可以考慮這款超最小的一組數據:用於從另一列有不同值的列中選擇不同值的SQL

id  col1 col2 
------------------- 
1  ab  12 
2  ab  12 
3  ab  12 
4  cd  34 
5  cd  43 
6  ef  34 
7  ef  56 
8  ef  34 

我需要的是col1選擇所有不同值,其中有在col2多個值。因此,從上述結果會是這樣的:

col1 
---- 
cd 
ef 

甚至更​​好,在col2爲每個唯一對應值的行:

col1 col2 
------------ 
ab  12 
cd  34 
cd  43 
ef  34 
ef  56 

回答

1

您可以用group byhaving做到這一點:

select col2 
from t 
group by col2 
having min(col2) <> max(col2); 

如果你只是想在不同的值,使用select distinct

select distinct col1, col2 
from t; 
+0

謝謝! 'group by'和'having'是SQL的兩個部分,我不太熟悉,但它現在完全合理。 –

1

首先之一,返回具有至少兩個不同COL2值COL1值:

select col1 from 
tablename 
group by col1 
having count(distinct col2) >= 2 

其次,COL2返回COL1,當COL1具有至少兩個不同COL2值:

select * from tablename 
where col1 in (
    select col1 from 
    tablename 
    group by col1 
    having count(distinct col2) >= 2) 
相關問題