> 데이터 베이스 > MySQL 튜토리얼 > 다른 열 데이터를 유지하면서 SQL SELECT 문에서 중복 이메일을 어떻게 제거할 수 있습니까?

다른 열 데이터를 유지하면서 SQL SELECT 문에서 중복 이메일을 어떻게 제거할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-03 04:54:39
원래의
271명이 탐색했습니다.

How Can I Eliminate Duplicate Emails in a SQL SELECT Statement While Retaining Other Column Data?

단일 열에 대해 DISTINCT를 사용하여 SELECT에서 중복 이메일 제거

테이블에서 여러 열을 검색하는 쿼리에서는 다음을 기준으로 중복 행을 제외하는 것이 바람직할 수 있습니다. 다른 열의 고유 값을 유지하면서 특정 열. DISTINCT 및 GROUP BY와 같은 기존 절이 전체 행에서 작동하므로 이는 어려울 수 있습니다.

이러한 요구를 해결하기 위해 ROW_NUMBER() 함수를 사용할 수 있습니다. 이 함수는 지정된 열로 정의된 파티션 내의 각 행에 고유한 일련 번호를 할당합니다. ROW_NUMBER()를 PARTITION BY 및 ORDER BY 절과 결합하면 원하는 열의 값을 기준으로 각 파티션 내의 행 순위를 생성할 수 있습니다.

다음 쿼리를 고려하세요.

SELECT ID, Email, ProductName, ProductModel
FROM Products
로그인 후 복사

고유한 이메일만 반환하도록 이 쿼리를 수정하려면 다음을 사용할 수 있습니다. code:

SELECT *
FROM (
    SELECT  ID, 
            Email, 
            ProductName, 
            ProductModel,
            ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) AS rn
    FROM Products
) AS a
WHERE rn = 1
로그인 후 복사

ROW_NUMBER() 함수는 이메일 열을 기준으로 결과를 파티션으로 나누고 각 행에 파티션 내 고유한 순위를 할당합니다. 후속 ORDER BY 절은 각 파티션에서 마지막으로 발생하는 행의 순위가 첫 번째가 되도록 보장합니다. 마지막 WHERE 절은 순위가 1인 행만 포함하도록 결과를 필터링하여 중복 이메일을 효과적으로 제거합니다.

이 접근 방식을 사용하면 모든 열을 분할 및 순위 지정의 기준으로 지정할 수 있으므로 쿼리를 유연하게 조정할 수 있습니다. 귀하의 특정 요구 사항에 맞게.

위 내용은 다른 열 데이터를 유지하면서 SQL SELECT 문에서 중복 이메일을 어떻게 제거할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿