SQLShack (한국어)

이 문서에서는 프로세스를 설명합니다. SQL 테이블에서 중복 행에 대해 SQL 삭제 작업을 수행하는 방법에 대해 설명합니다.

소개

SQL Server에서 개체를 디자인하는 동안 특정 모범 사례를 따라야합니다. 예를 들어 테이블에는 데이터 무결성 및 성능을 보장하기위한 기본 키, ID 열, 클러스터형 및 비 클러스터형 인덱스, 제약 조건이 있어야합니다. 모범 사례를 따르더라도 중복 행과 같은 문제에 직면 할 수 있습니다. 데이터 가져 오기의 중간 테이블에서도 이러한 데이터를 가져올 수 있으며 실제로 프로덕션 테이블에 삽입하기 전에 중복 행을 제거하려고합니다.

SQL 테이블에 중복 행이 포함되어 있고 이러한 중복 행을 제거한다고 가정합니다. . 여러 번 우리는 이러한 문제에 직면합니다. 관련 키를 사용하는 것도 모범 사례이며 테이블에 이미 중복 행이있는 경우 중복 행의 가능성을 제거하도록 제한합니다. 중복 데이터를 정리하려면 특정 방법을 따라야합니다. 이 기사에서는 SQL 테이블에서 중복 데이터를 제거하는 다양한 방법을 살펴 봅니다.

샘플 Employee 테이블을 만들고 여기에 몇 개의 레코드를 삽입 해 보겠습니다.

테이블에는 중복 레코드가 거의 없으므로 제거해야합니다.

SQL은 Group By 및 having 절을 사용하여 중복 행을 삭제합니다.

이 방법에서는 SQL GROUP BY 절을 사용하여 중복을 식별합니다. 행. Group By 절은 정의 된 열에 따라 데이터를 그룹화하고 COUNT 함수를 사용하여 행의 발생을 확인할 수 있습니다.

예를 들어 다음 쿼리를 실행하면 다음보다 큰 발생이있는 레코드를 얻을 수 있습니다. Employee 테이블의 1.

위의 출력에는 ID 1과 3의 중복 레코드가 2 개 있습니다.

p>

  • Emp ID 1은 Employee 테이블에 두 번 발생합니다.
  • Emp ID 3에는 Employee 테이블에 세 개의 발생이 있습니다.

단일 행을 제거하고 중복 행을 제거하십시오. 테이블에서 중복 된 행만 제거하면됩니다. 예를 들어 EmpID 1은 테이블에 두 번 나타납니다. 하나의 항목 만 제거하려고합니다.

SQL MAX 함수를 사용하여 각 데이터 행의 최대 ID를 계산합니다.

다음 스크린 샷에서 위의 Select 문은 각 중복 행의 Max ID를 제외하고 최소 ID 값만 얻습니다.

이 데이터를 제거하려면 먼저 다음 쿼리에 따라 SQL 삭제 문으로 선택하십시오.

delete 문을 실행 한 후 Employee 테이블에서 선택을 수행하면 중복 행을 포함하지 않는 다음 레코드가 생성됩니다.

SQL은 CTE (Common Table Expressions)를 사용하여 중복 행을 삭제합니다.

일반적으로 CTE라고 알려진 Common Table Expression을 사용하여 SQL Server에서 중복 행을 제거 할 수 있습니다. SQL Server 2005부터 사용할 수 있습니다.

우리는 SQL ROW_NUMBER 함수를 사용하며 행에 대해 고유 한 순차적 행 번호를 추가합니다.

다음 CTE에서는 , 및 열에 대해 PARTITION BY 절을 사용하여 데이터를 생성하고 각 행에 대해 행 번호를 생성합니다.

출력에서 열 값이 1보다 큰 행이 있으면 중복 된 행임을 나타냅니다. 행.

다음 CTE를 사용하여 중복 행을 제거 할 수 있습니다.

행을 제거합니다. 값이 1보다 큰 경우

중복 행을 SQL 삭제하는 RANK 함수

SQL RANK 기능을 사용하여 중복 행도 제거 할 수 있습니다. SQL RANK 함수는 중복 행에 관계없이 각 행에 대해 고유 한 행 ID를 제공합니다.

다음 쿼리에서는 PARTITION BY 절과 함께 RANK 함수를 사용합니다. PARTITION BY 절은 지정된 열에 대한 데이터 하위 집합을 준비하고 해당 파티션의 순위를 제공합니다.

스크린 샷에서 순위가 1보다 큰 행을 제거해야합니다. 다음 쿼리를 사용하여 해당 행을 제거해 보겠습니다.

SSIS 패키지를 사용하여 SQL 중복 행 삭제

SQL Server 통합 서비스는 관리자와 개발자가 수작업을 줄이는 데 도움이되는 다양한 변환, 연산자를 제공합니다. 작업을 최적화합니다. SSIS 패키지는 SQL 테이블에서도 중복 행을 제거 할 수 있습니다.

SSIS 패키지에서 정렬 연산자를 사용하여 중복 행 제거

정렬 연산자를 사용하여 값을 정렬 할 수 있습니다. SQL 테이블. 데이터 정렬로 중복 행을 제거하는 방법을 물어볼 수 있습니까?

이 작업을 보여주는 SSIS 패키지를 만들어 보겠습니다.

  • SQL Server 데이터 도구에서 새 통합 패키지를 만듭니다.새 패키지에서 OLE DB 소스 연결 추가
  • OLE DB 소스 편집기를 열고 소스 연결을 구성하고 대상 테이블을 선택하십시오.

  • 데이터 미리보기를 클릭하면 소스 테이블에 여전히 중복 데이터가 있음을 알 수 있습니다.

  • SQL 삭제 작업을 위해 SSIS 도구 상자에서 정렬 연산자를 추가하고 소스 데이터와 조인합니다.

정렬 연산자를 구성하려면 두 번 클릭하고 중복 값이 포함 된 열을 선택하십시오. 이 경우 중복 값은,, 열에 있습니다.

열에 대해 오름차순 또는 내림차순 정렬 유형을 사용할 수도 있습니다. 기본 정렬 방법은 오름차순입니다. 정렬 순서에서 열 정렬 순서를 선택할 수 있습니다. 정렬 순서 1은 먼저 정렬 될 열을 보여줍니다.

왼쪽 하단에 Remove rows with 중복 정렬 값.

소스 데이터에서 중복 행을 제거하는 작업을 수행합니다. 이 확인란에 체크 표시를하고 확인을 클릭합니다. SSIS 패키지에서 SQL 삭제 작업을 수행합니다.

확인을 클릭하면 데이터 흐름 탭으로 돌아갑니다. 다음 SSIS 패키지를 볼 수 있습니다.

중복 행을 제거한 후 데이터를 저장할 SQL Server 대상을 추가 할 수 있습니다. 정렬 연산자가 우리를 위해 작업을 수행하고 있는지 확인하고 싶습니다.

아래와 같이 SSIS 도구 상자에서 SQL 멀티 캐스트 변환을 추가합니다.

고유 한 데이터를 보려면 정렬과 멀티 캐스트 사이의 커넥터를 마우스 오른쪽 버튼으로 클릭합니다. 데이터 뷰어 활성화를 클릭합니다.

전체 SSIS 패키지는 다음과 같습니다.

패키지를 실행하여 SQL 삭제 작업을 수행합니다. 데이터 흐름 태스크에서 출력 데이터 정렬 뷰어가 열립니다. 이 데이터 뷰어에서 중복 값을 제거한 후 고유 한 데이터를 볼 수 있습니다.

이것을 닫으면 SSIS 패키지가 성공적으로 표시됩니다.

결론

이 기사에서는 SQL에서 중복 행을 삭제하는 과정을 살펴 보았습니다. T-SQL, CTE 및 SSIS 패키지와 같은 다양한 방법. 편안하게 느끼는 방법을 사용할 수 있습니다. 그러나 이러한 절차와 패키지를 프로덕션 데이터에 직접 구현하지 않는 것이 좋습니다. 더 낮은 환경에서 테스트해야합니다.

  • 작성자
  • 최근 게시물
인도 구르 가온의 MCSA 인증 및 Microsoft Certified Trainer로서 13 년의 경력을 보유한 Rajendra는 성능 최적화, 모니터링, 고 가용성, 재해 복구 전략 및 구현에 중점을 둔 다양한 대기업에서 근무합니다. 그는 SQL Server, Azure, MySQL, Linux, Power BI, 성능 조정, AWS / Amazon RDS, Git 및 현재까지 1,000 만 명이 넘는 독자가 시청 한 관련 기술에 대한 수백 개의 권위있는 기사의 저자입니다.
그는 SQL Server Always On 가용성 그룹에 대한 50 부작 시리즈를 통해 단일 주제에 대한 가장 큰 무료 온라인 기사 모음 중 하나를 작성했습니다. SQL Server 커뮤니티에 대한 공헌을 바탕으로 2020 년과 2021 년 SQLShack에서 지속적으로 권위있는 “올해의 최우수 저자”를 비롯한 다양한 상을 수상했습니다.
Raj는 항상 새로운 도전에 관심이 있으므로 컨설팅이 필요한 경우 그의 글에서 다루는 주제에 대한 도움은 [email protected]으로 연락 할 수 있습니다.
Rajendra Gupta의 모든 게시물보기

Rajendra Gupta의 최신 게시물 (전체보기)
  • AWS에 대한 마이너 및 메이저 버전 업그레이드 수행 RDS SQL Server-2021 년 1 월 29 일
  • AWS RDS PostgreSQL 인스턴스 배포-2021 년 1 월 27 일
  • AWS DMS를 사용하여 온 프레미스 SQL 데이터베이스를 AWS RDS SQL Server로 마이그레이션-1 월 25 일 , 2021

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다