DISTINCT를 사용하여 SQL 쿼리에서 이메일 중복 제거
제공된 SQL 쿼리에서 허용하는 동안 고유한 이메일 항목을 반환하도록 수정하는 것을 목표로 합니다. 다른 열에 중복됩니다. DISTINCT 및 GROUP BY는 전체 행에서 작동하므로 이 목표를 달성하려면 다른 접근 방식이 필요합니다.
해결책은 SQL Server의 ROW_NUMBER() 함수를 활용하는 하위 쿼리를 통합하는 것입니다. 이메일을 기준으로 데이터 세트를 분할하고 ROW_NUMBER() 함수를 사용하여 ID 내림차순으로 정렬하면 각 이메일 그룹 내의 각 행에 고유한 순위를 할당할 수 있습니다.
그런 다음 기본 쿼리는 해당 데이터가 있는 모든 행을 선택합니다. 순위 값(rn)은 1과 동일하며 각 개별 이메일에 대해 하나의 행만 결과에 포함됩니다.
수정된 내용은 다음과 같습니다. 쿼리:
SELECT * FROM ( SELECT ID, Email, ProductName, ProductModel, ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn FROM Products ) a WHERE rn = 1
이 쿼리는 다른 열의 중복 항목을 유지하면서 중복 이메일을 효과적으로 제거합니다. 다음 예에서 설명한 것처럼 하위 쿼리에 조건부 필터를 추가하여 쿼리를 더욱 구체화할 수 있습니다.
SELECT * FROM ( SELECT ID, Email, ProductName, ProductModel, ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn FROM Products WHERE ProductModel = 2 AND ProductName LIKE 'CYBER%' ) a WHERE rn = 1
이 수정된 쿼리는 ProductModel이 2이고 이름이 'CYBER%'로 시작하는 제품으로 결과를 제한합니다. ', 이러한 기준 내에서 중복되지 않은 이메일 항목을 유지합니다.
위 내용은 SQL에서 다른 열 중복을 유지하면서 중복 이메일을 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!