2016-06-24 5 views
0

여기 Google에서 해결할 수없는 문제가 있습니다. 행 번호와 매개 변수가있는 표가 있습니다.다른 하나를 그룹화하는 동안 중복 행을 삭제하십시오.

Number Parameter id 
3   22   1 
3   22   2 
2   32   3 
1   44   4 
2   12   5 
4   22   6 
1   44   7 
2   12   8 
2   36   9 

내가

DELETE n1 FROM a n1,a n2 WHERE n1.parameter = n2.parameter AND n1.id > n2.id AND n1.id <> n2.id

을 시도
Number Parameter id 
3   22   1 
2   32   3 
1   44   4 
2   12   5 
4   22   6 
2   36   9 

에 그러나 이것은 너무 중복 된 매개 변수를 사용하여 모든 행을 삭제 : 지금은 각 번호에 대해 동일한 매개 변수를 사용하여 중복 행을 제거 할 각자 하나만 지켜야한다. 어떻게 든 그룹으로 번호를 추가해야합니다. 나는 생각하지만 나는 어떻게하는지 모른다.

EDIT : 오 ID 행을 추가하지 않았습니다. 물론 모든 행에 ID 행이 있으므로 지금 추가 할 것입니다.

EDIT2 : 10086의 답이 효과가있었습니다. 다음

+0

복제 된 행이 완전히 동일하고 한 열이 다른 값을 가지지 않는다면 제거하는 것이 불가능하다고 생각합니다. 대신 별개의 것을 사용하는 것이 어떻습니까? 테이블에서 고유 번호, 매개 변수를 선택하십시오. –

+0

andre_northwind sais와 같이 정확히 같은 행 중 하나를 제거하는 것은 불가능합니다. 적어도 하나의 추가 컬럼이 필요합니다. 테이블의 스키마를 변경할 수 있습니까? – lvoros

답변

0

시도)이 가장 낮은 id 값이있는 행 유지됩니다

DELETE t1 
FROM a t1 
INNER JOIN a t2 
ON t1.id > t2.id 
AND t1.Parameter = t2.Parameter 
AND t1.Number = t2.Number; 

SQLFiddle DEMO HERE

.

+0

EDIT : 내가 편집 한 게시물을 다시 보겠습니다. – Baldry

+0

@ Baldry Updated, 다시 시도하십시오. SQLFiddle 데모를 확인하십시오. – Blank

+0

부적처럼 일했습니다 대단히 감사합니다! 나는 더 많은 데이터를 조사해야 할 것이다. 그러나 그것은 옳은 것처럼 보인다. – Baldry

관련 문제