0

我有一个如下表T1

COL1  COL2                   
---------------
aaa   10 
bbb   20                     
bbb   20                     
bbb   10                     
ccc   30                     
ccc   30                     
aaa   30                     
ddd   30                     

我想要col1col2值 wherecol1仅映射到一个col2.

COL1 COL2                   
-----------
ccc 30                     
ddd 30    

请让我知道如何实现我的目标。

我尝试使用以下方法获得所需的结果集:

select distinct col1, col2 
 from t1 
where col1 in (select col1 
                 from (select distinct col1, col2 from t1) 
                group by col1 
               having count(col2) = 1);

如果没有那么多内部查询,还有哪些其他选项。

提前致谢。

4

2 回答 2

2
select  Col1
,       max(Col2) as Col2
from    YourTable
group by
        Col1
having  count(distinct Col2) = 1

该子句确保单个组中having只有一个。Col2您可以使用maxmin什至显示它avg

在 SQL Fiddle 上查看它(感谢 Amit Singh。)

于 2013-11-05T08:39:46.787 回答
1
Select Distinct A.Col1,A.Col2 from Table1 A
inner join 
(Select Col1,Count(Distinct Col2) as col3 from Table1 group by Col1) B on
A.Col1=B.Col1 and B.Col3=1

Sql 小提琴

于 2013-11-05T08:44:58.643 回答