고유 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() 함수를 사용하는 것입니다. 이 조합을 사용하면 삭제해야 할 행을 식별할 수 있습니다.
<code class="language-sql">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</code>
이 쿼리를 분석해 보겠습니다.
참고: 원본 게시물에 제공한 결과는 오타로 인해 달라질 수 있습니다. 위 출력은 예상된 결과를 나타냅니다.
이 기술의 유연성 덕분에 PARTITION BY 절에 여러 열을 포함할 수 있어 여러 조건 조합을 기반으로 중복 항목을 감지할 수 있습니다.
위 내용은 고유 ID 없이 테이블에서 중복 행을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!