0

!!! HAVINGを使用してこの問題を解決する方法はありますが、HAVINGを使用せずにそれを行う他の簡単な方法はありますか?

2つの関係aとbを持つテーブルt1があるとしましょう。

-a  b
-1  2
-2  1
-3  4
-4  9
-8  5
-5  2
-6  5

繰り返されている列Bのケース(この場合は2と5)のみを印刷するにはどうすればよいですか?

4

3 に答える 3

4

句が必要ない場合はHAVING、サブクエリを使用できます。

select t1.a, t1.b
from yourtable t1
inner join
(
  select count(*) tot, b
  from yourtable
  group by b
) t2
  on t1.b = t2.b
where t2.tot > 1

SQL FiddlewithDemoを参照してください。

サブクエリは、各値のカウントを取得するために使用されbます。次に、結果をテーブルに結合し、カウントが1より大きいレコードを除外します。

これにより、次の結果が得られます。

| A | B |
---------
| 1 | 2 |
| 8 | 5 |
| 5 | 2 |
| 6 | 5 |
于 2013-02-06T16:51:25.093 に答える
2

すでに素晴らしい例に加えて... HAVING の例:

SELECT * FROM 
(
 SELECT col_a t1
   FROM stack_test
 ) a,
 (
 SELECT col_b t2
   FROM stack_test
  GROUP BY col_b
  HAVING Count(*) > 1
 ) b
 WHERE t1 = t2
 /

 SQL>

  T1   T2
  -------
  2     2
  5     5
于 2013-02-06T17:36:05.570 に答える