2012-02-28 13 views
2

私は解決策をオンラインで試しましたが、どれも私のために働いていませんでした。重複する列の値を持つ行を取得する

Table : 
Id rank 
1 100 
1 100 
2 75 
2 45 
3 50 
3 50 

私は、彼らが重複を持っているbeacuse ID 1と3は、返さたいです。

私は

select * from A where rank in ( 
select rank from A group by rank having count(rank) > 1 

のようなものを試してみましたこれはまた、任意の重複なしのIDを返しました。助けてください。複数の行に存在するすべてのidを得るが、これらすべての行は同じを持っている:平易な英語で

SELECT id 
FROM your_table 
GROUP BY id 
HAVING COUNT(*) > 1 AND COUNT(DISTINCT rank) = 1 

を:

select id from table 
group by id, rank 
having count(*) > 1 
+0

http://stackoverflow.com/questions/4010311/how-to-check-if-all-fields-oracleでユニークな – tyjkenn

+0

重複する質問、皮肉! - http://stackoverflow.com/questions/2053569/is-it-possible-for-sql-to-find-records-with-duplicates –

+0

@JCooper:申し訳ありません。私は投稿する前にオンラインで調べた。試したカップル。しかし、私はIDとランクの両方でグループ化する必要があることを知りませんでした。 – user393148

答えて

4

これを試してみてください値はrankです。


あなたは、いくつかの重複rank S(必ずしもすべてではない)を持っているid秒をしたい場合は、このようなものは動作するはずです:

SELECT id 
FROM your_table 
GROUP BY id 
HAVING COUNT(*) > COUNT(DISTINCT rank) 
+0

これは私に複数の値を持つIdを与えます。私は重複したものを手に入れようとしています。ありがとう – user393148

+0

よろしくお願いいたします。私はランクを逃した –

+0

ありがとう。 :)私はこれらのフォーラムとあなたの人なしで何をするか分からない。 :)。 – user393148

1
select id, rank 
from 
(
    select id, rank, count(*) cnt 
    from rank_tab 
    group by id, rank 
    having count(*) > 1 
) t 
1

は、この一般的なアイデアは動作するはずです:

関連する問題