고유 ID 없이 테이블에서 중복 행을 삭제하는 방법은 무엇입니까?
Jan 23, 2025 am 01:47 AM고유 ID가 없는 중복 행 제거
테이블에 고유한 행 식별자가 없는 경우 중복 행을 어떻게 제거할 수 있나요? 다음 데이터가 포함된 테이블이 있다고 가정해 보겠습니다.
<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 | |---|---|---|---|---|---|---| | john | 1 | 1 | 1 | 1 | 1 | 1 | | john | 1 | 1 | 1 | 1 | 1 | 1 | | sally | 2 | 2 | 2 | 2 | 2 | 2 | | sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
우리의 목표는 중복 행을 제거하고 다음을 남기는 것입니다.
<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 | |---|---|---|---|---|---|---| | john | 1 | 1 | 1 | 1 | 1 | 1 | | sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
고유 ID 누락 문제를 방지하는 안정적인 방법은 CTE(공용 테이블 표현식) 및 ROW_NUMBER() 함수를 사용하는 것입니다. 이 조합을 사용하면 삭제해야 할 행을 식별할 수 있습니다.
WITH CTE AS ( SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7], RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1) FROM dbo.Table1 ) DELETE FROM CTE WHERE RN > 1
이 쿼리를 분석해 보겠습니다.
- "CTE"라는 CTE는 ROW_NUMBER() 함수를 사용하여 "col1" 열을 기준으로 분할하는 동안 해당 열의 각 고유 값을 기반으로 행 번호를 계산합니다. 그런 다음
- DELETE 문은 행 번호(RN)가 1보다 큰 행을 삭제하여 중복 행을 제거합니다.
참고: 원본 게시물에 제공한 결과는 오타로 인해 달라질 수 있습니다. 위 출력은 예상된 결과를 나타냅니다.
이 기술의 유연성 덕분에 PARTITION BY 절에 여러 열을 포함할 수 있어 여러 조건 조합을 기반으로 중복 항목을 감지할 수 있습니다.
위 내용은 고유 ID 없이 테이블에서 중복 행을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)

일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까?
