1
我的结果集是这样的:查找,如果有一个字段的结果的重复值集合
A B
-------
1 10
2 10
2 10
3 10
4 10
5 10
我选择与对应于10为B的值B例如值的值有的如1,2,2,3,4,5。
我想知道是在有一种用于B的任何值作为该情况下2重复值被重复,由此不同的值在这种情况下回答是YES。
我的结果集是这样的:查找,如果有一个字段的结果的重复值集合
A B
-------
1 10
2 10
2 10
3 10
4 10
5 10
我选择与对应于10为B的值B例如值的值有的如1,2,2,3,4,5。
我想知道是在有一种用于B的任何值作为该情况下2重复值被重复,由此不同的值在这种情况下回答是YES。
在标准的ANSI SQL,你可以简单地使用GROUP BY:
select a, b
from my_table
group by a, b
having count(*) > 1
这将返回的a
和b
每个组合对此有更多的则是一排,它会在指定的RDBMS工作。
使用一组由
SQL> with data as (select rownum A , 10 B from dual connect by level <= 5
2 union all
3 select 2 A , 10 B from dual)
4 select b, case when count(*) - count(distinct a) > 0 then 'YES' else 'NO' end has_dups
5 from data
6 group by b;
B HAS
---------- ---
10 YES
SQL>
SQL> with data as (select rownum A , 10 B from dual connect by level <= 5
2 union all
3 select 2 A , 10 B from dual)
4 select b, a dup_val, count(*) number_of_dups
5 from data
6 group by b, a
7 having count(*) > 1;
B DUP_VAL NUMBER_OF_DUPS
---------- ---------- --------------
10 2 2
出于好奇要问,这样做有什么目的?只是为了找到重复? – Mari