>  기사  >  데이터 베이스  >  가장 오래된 제출물을 유지하면서 subscriberEmail을 기반으로 중복 행을 제거하려면 어떻게 해야 합니까?

가장 오래된 제출물을 유지하면서 subscriberEmail을 기반으로 중복 행을 제거하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-03 15:10:30539검색

How do I remove duplicate rows based on subscriberEmail while keeping the oldest submission?

가장 오래된 제출을 유지하면서 중복 행 제거

원래 제출을 유지하면서 subscriberEmail 필드를 기준으로 중복 행을 제거하려면 다음 단계를 따르세요. :

<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id;</code>

설명:

  • 이 쿼리는 Join 절을 사용하여 테이블 자체를 조인합니다. 그러면 별칭이 "x"와 "z"인 두 개의 테이블 인스턴스가 생성됩니다.
  • where 절은 두 인스턴스의 id 값을 비교합니다. 인스턴스 "z"의 해당 행보다 더 큰 ID를 가진 인스턴스 "x"의 행은 중복 제출을 나타냅니다.
  • 삭제 문은 인스턴스 "x"에서 이러한 중복 행을 식별하고 테이블에서 제거합니다.
  • 결과는 고유한 구독자 이메일이 포함된 테이블이며, 각 이메일 주소에 대해 원래 제출물(가장 낮은 ID 포함)만 남습니다.

추가 참고 사항:

  • 향후 중복을 방지하려면 subscriberEmail 열에 UNIQUE 인덱스를 생성하는 것이 좋습니다.
  • 위 쿼리는 조인 및 where 절을 결합하여 단순화할 수 있습니다.
<code class="sql">delete x
from myTable x
join myTable z
on x.subscriberEmail = z.subscriberEmail and x.id > z.id;</code>

위 내용은 가장 오래된 제출물을 유지하면서 subscriberEmail을 기반으로 중복 행을 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.