2012-12-27 29 views
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。

+0

出于好奇要问,这样做有什么目的?只是为了找到重复? – Mari

回答

3

在标准的ANSI SQL,你可以简单地使用GROUP BY:

select a, b 
    from my_table 
group by a, b 
having count(*) > 1 

这将返回的ab每个组合对此有更多的则是一排,它会在指定的RDBMS工作。

0

使用一组由

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 
相关问题