2012-02-28 2 views
2

온라인 솔루션을 사용해 보았지만 나에게 도움이되지는 못했습니다.중복 열 값이있는 행 얻기

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

ID 1과 3이 반환되기를 바란다. 중복 된 것으로 간주한다.

나는 이것은 또한 어떤 중복없이 ID를 반환

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

같은 것을 시도했다. 도와주세요. 여러 행에 존재하는 모든 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-are-oracle 오크 안에 – tyjkenn

+0

중복 질문, 아이러니! - http://stackoverflow.com/questions/2053569/is-it-possible-for-sql-to-find-records-with-duplicates –

+0

@JCooper : 죄송합니다. 나는 게시하기 전에 온라인을 찾았다. 시도한 커플. 그러나 didnt는 내가 id와 rank에 의해 그룹화 할 필요가있다라는 것을 알고있다. – user393148

답변

4

이 시도 값은 rank입니다.


당신이 일부 중복 rank의 (그러나 반드시 모든)가 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

이 일반적인 생각은 작동합니다 :