質問

このようなテーブルがあります:

+-----+-----+-------+
| id  | fk  | value |
+-----+-----+-------+
| 0   | 1   | peter |
| 1   | 1   | josh  |
| 3   | 2   | marc  |
| ... | ... | ...   |

複数の値を持つすべてのエントリを取得したいと思います。 予想される結果は次のようになります。

+-----+-------+
| fk  | count |
+-----+-------+
| 1   | 2     |
| ... | ...   |

次のように実現しようとしました:

select fk, count(value) from table where count(value) > 1;

しかし、オラクルは気に入らなかった。

だからこれを試しました...

select * from (
    select fk, count(value) as cnt from table
) where cnt > 1;

...成功なし

アイデアはありますか

役に立ちましたか?

解決

集計を比較するには、 having 句を使用します。

また、クエリが正しく機能するためには、集計対象でグループ化する必要があります。以下は開始点ですが、group by句が欠落しているため、まだうまくいきません。正確に何を数えようとしていますか

select fk, count(value) 
from table 
group by fk
having count(value) > 1;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top