3

这是我的示例表

Col1   Col2
 A      1
 B      1
 A      1
 B      2
 C      3

我希望能够选择所有行在 Col1 和 Col2 中具有相同值的不同记录。所以我的答案应该是

Col1   Col2
 A      1
 C      3

我试过

SELECT Col1, Col2 FROM Table GROUP BY Col1, Col2

这给了我

Col1   Col2
 A       1
 B       1
 B       2
 C       3

这不是我要找的结果。任何提示将不胜感激。

4

3 回答 3

5

试试这个:

SELECT col1, MAX(col2) aCol2 FROM t
GROUP BY col1
HAVING COUNT(DISTINCT col2) = 1

输出:

| COL1 | ACOL2 |
|------|-------|
|    A |     1 |
|    C |     3 |

在这里拉小提琴。

基本上,这可以确保col2对于给定的不同值的数量是唯一的col1

于 2013-10-31T04:13:55.467 回答
1

试试这个:

SELECT * FROM MYTABLE
GROUP BY Col1, Col2
HAVING COUNT(*)>1

例如这里的 SQLFiddle

于 2013-10-31T04:16:57.313 回答
0

您可以尝试以下任何一种 -

select col1, col2 from 
(             
select 'A'    Col1 ,   1 Col2
from dual
union all 
select 'B'      , 1
from dual
union all
select 'A'       ,1
from dual
union all
select 'B'       ,2
from dual
)
group by col1, col2
having count(*) >1;

或者

select col1, col2
from
( 
    select col1, col2, row_number() over (partition by col1, col2 order by col1, col2) cnt 
    from 
        (             
        select 'A'    Col1 ,   1 Col2
        from dual
        union all 
        select 'B'      , 1
        from dual
        union all
        select 'A'       ,1
        from dual
        union all
        select 'B'       ,2
        from dual
        )
)
where cnt>1;
于 2013-10-31T04:17:13.217 回答