테이블에서 중복 레코드를 삭제해야합니다. 구문 : T-SQL (MS SQL 서버)다른 테이블에서 연결된 데이터 세트가있는 행에서 중복 검색
그것은 두 어려움이 있습니다
행 비교에 영향을 미치지 않습니다 데이터를 포함하는 필드가 있습니다-
처음에 링크 추가 표가 있습니다
- "일대 다"관계
예 :
Table A Table B
-------------- --------------
AId - int <-\ BId - int
A1 - int \-> AId - int
A2 - varchar B6 - varchar
A3 - varchar B7 - varchar
A4 - varchar B8 - varchar
A5 - int B9 - int
따라서 표 A의 모든 레코드에는 AId, A1, A2, A3, A4 및 A5 필드와 B. 하위 레코드 목록이 포함됩니다. B.AId가 A.AId와 일치하는 표 B의 레코드 목록. 예를 들어, 표 A에는 날짜/시간 또는 고객 ID와 같은 트랜잭션 특성이 들어있는 구매 트랜잭션 목록이 될 수 있으며 표 B는 가격 및 금액이 표시된 상품 목록을 나타낼 수 있습니다.
일부 레코드가 복제되면. 그들에는 다른 AId, 다른 BId, 다른 A4, A5, B8 및 B9가있다. 다른 모든 필드는 두 레코드가 중복되도록 일치해야합니다.
따라서, 기록의 두 X 및 Y를 고려 중복 된 경우 :
- X.A1 == Y.A1
- X.A2 == Y.A2
- 모든 레코드로부터 도움으로 표 B는 == X.AId 완전히 == 도움으로 Y.AId을 B에서 모든 기록과 일치하지만, 제외 (무시) B8 및 B9 필드는
나는 적어도 같은 중복 레코드의 에이즈를 얻을 필요 , 최대로 그 사본을 지우지 만 오직 하나의 사본 만 남겨 두었다. (어떤 것이 든 상관 없다).
다음 설명이 필요한 경우 알려주십시오. 미리 감사드립니다.
UPD : SQL 바이올린 : http://sqlfiddle.com/#!3/898c8/1
감사합니다. 그러나 http://sqlfiddle.com/#!3/898c8/1을 조정할 수 있습니까? 최종 출력에는 AID 1과 2가 있어야합니다. B7의 행 중 하나에 다른 값이 있으므로 3과 4는 계산되지 않습니다. – 12345
전혀 작동하지 않는 것 같습니다. – 12345