>데이터 베이스 >MySQL 튜토리얼 >여러 열(예: 이메일 및 이름)을 기반으로 SQL 테이블에서 중복 행을 찾는 방법은 무엇입니까?

여러 열(예: 이메일 및 이름)을 기반으로 SQL 테이블에서 중복 행을 찾는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-23 02:04:11978검색

How to Find Duplicate Rows in a SQL Table Based on Multiple Columns (e.g., Email and Name)?

여러 열을 사용하여 SQL에서 중복 레코드 식별

이 문서에서는 특히 여러 열(예: 이메일 및 이름)에서 일치하는 값으로 중복이 정의된 경우 SQL 테이블 내에서 중복 행을 감지하는 문제를 다룹니다. 간단한 쿼리는 단일 열을 기반으로 중복을 식별할 수 있지만 이 솔루션은 해당 기능을 확장합니다.

해결책:

다음 SQL 쿼리는 emailname 필드를 기반으로 중복 레코드를 효율적으로 식별합니다.

<code class="language-sql">SELECT
    name, email, COUNT(*) AS DuplicateCount
FROM
    users
GROUP BY
    name, email
HAVING 
    DuplicateCount > 1</code>

이 쿼리는 nameemail의 고유한 조합을 기반으로 행을 그룹화합니다. COUNT(*) 함수는 각 조합의 발생 횟수를 계산하고 HAVING 절은 결과를 필터링하여 중복 레코드를 나타내는 두 번 이상 나타나는 조합만 표시합니다. AS DuplicateCount 절은 명확성을 위해 더 설명적인 열 이름을 제공합니다.

핵심 개념:

이 솔루션은 기능적 종속성의 데이터베이스 개념을 활용합니다. 이러한 맥락에서 nameemail는 함께 기능적 종속성을 형성합니다. 특정 name은 특정 email에 고유하게 해당하며 그 반대도 마찬가지입니다(두 개인이 정확히 동일한 이름과 이메일을 공유하지 않는다고 가정). 두 필드를 모두 그룹화하면 중복 항목을 정확하게 식별할 수 있습니다.

실용적 고려 사항:

개념적으로는 간단하지만 일부 SQL 데이터베이스 시스템에서는 집계되지 않은 열(여기서는 nameemail 등)에 대한 그룹화를 허용하기 위해 특정 구성 설정이 필요할 수 있습니다. 예를 들어, 이러한 유형의 쿼리를 활성화하려면 MySQL의 sql_mode=only_full_group_by 설정을 조정해야 할 수도 있습니다. 관련 구성 요구 사항은 데이터베이스 시스템 설명서를 참조하세요.

위 내용은 여러 열(예: 이메일 및 이름)을 기반으로 SQL 테이블에서 중복 행을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.