가장 오래된 항목을 유지하면서 테이블에서 중복 행을 제거하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-29 09:21:29
원래의
229명이 탐색했습니다.

How to Remove Duplicate Rows in a Table While Keeping the Oldest Entry?

가장 오래된 항목을 보존하면서 중복 행 제거

사용자 제출 데이터가 포함된 테이블에서 subscriberEmail 필드를 기준으로 중복 항목이 누적되었습니다. 데이터 무결성을 보장하려면 원래 제출물을 유지하면서 이러한 중복 행을 제거하려고 합니다.

해결책:

<code class="sql">delete x 
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id</code>
로그인 후 복사

설명:

  • 셀프 조인: 쿼리는 myTable 테이블에서 셀프 조인을 수행하여 별칭 "x"와 "z"라는 두 개의 별도 테이블 인스턴스를 생성합니다.
  • 비교 조건: 조인은 subscriberEmail 열을 기준으로 "x" 및 "z"의 행을 일치시켜 각 행을 다른 모든 행과 효과적으로 비교합니다.
  • 필터링 : where 절은 "x"에서 id 열 값이 "z"에 있는 해당 행의 id 값보다 큰 행을 선택합니다. 이는 ID 값이 더 높은 중복 행을 식별합니다.
  • 삭제: 삭제 문은 "x"로 식별된 중복 행을 제거하고 원래 제출물만 남깁니다.

추가 고려 사항:

향후 중복 삽입을 방지하려면 subscriberEmail 열에 UNIQUE 인덱스를 생성하는 것이 좋습니다. 이렇게 하면 테이블에서 이메일 주소의 고유성이 적용됩니다.

위 내용은 가장 오래된 항목을 유지하면서 테이블에서 중복 행을 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿