1

必要な値を返す SQL ステートメントを作成するのに問題があります。ユーザー ID、2 番目の列の値、およびその列の値が複数回出現する 3 番目の列の値に基づいてデータを選択する必要があります。すべての列が同じテーブル内にあります。

これが現在のクエリの大まかな概要ですが、最後の AND ステートメントは明らかに、私が何を求めているかを示すためのものです。結果を絞り込む COUNT ステートメントは、おそらくうまくいかないでしょう。

SELECT *
FROM table
WHERE user_id = 123
AND second_id = 1
AND third_id having COUNT(1) > 1;
4

1 に答える 1

4

必要な列が user_id、second_id、 third_id だけの場合は、これを試してください。

SELECT user_id, second_id, third_id, COUNT(1) 
FROM table
WHERE user_id = 123
AND second_id = 1
GROUP BY  user_id, second_id, third_id
HAVING   COUNT(1) > 1;

追加の列があり、それらのフィールドも取得したい場合は、これを試してください(Oracle 9.2以降):

WITH qry AS
(
    SELECT a.*,
            COUNT(1)  OVER(PARTITION BY user_id, second_id, third_id) rpt_count
FROM table a
WHERE user_id = 123
AND second_id = 1
)
SELECT *
  FROM qry 
    WHERE rpt_count > 1
于 2011-07-27T18:18:09.110 に答える