1

我有这样的结果集:

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 是重复的,所以在这种情况下的答案是肯定的。

4

2 回答 2

3

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

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

这将返回超过一行的 和 的每个组合,a并且b它将在每个指定的 RDBMS 上工作。

于 2012-12-27T10:17:03.343 回答
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
于 2012-12-27T10:19:21.853 回答