我有这样的结果集:
A B
-------
1 10
2 10
2 10
3 10
4 10
5 10
我选择 A 的值对应于 B 的值,例如对应于 10 作为 B 的值 A 的值有不同的值,例如 1、2、2、3、4、5。
我想知道对于 B 的任何值,A 中是否存在重复值。因为在这种情况下,2 是重复的,所以在这种情况下的答案是肯定的。
我有这样的结果集:
A B
-------
1 10
2 10
2 10
3 10
4 10
5 10
我选择 A 的值对应于 B 的值,例如对应于 10 作为 B 的值 A 的值有不同的值,例如 1、2、2、3、4、5。
我想知道对于 B 的任何值,A 中是否存在重复值。因为在这种情况下,2 是重复的,所以在这种情况下的答案是肯定的。
在标准 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