Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 중복 값 쌍을 찾는 방법 – GROUP BY와 HAVING 절 활용하기

MySQL에서 중복된 값 쌍(duplicate value pairs)을 찾으려면 GROUP BY 절과 HAVING 절을 함께 사용하면 됩니다. 이 방법은 두 개 이상의 컬럼 조합이 동일하게 나타나는 행을 손쉽게 식별할 수 있어 데이터 정제 작업에 매우 유용합니다.

1. 예제 테이블 생성하기

먼저 실습용 테이블을 생성합니다.

mysql> create table DemoTable748 (Id int, FirstName varchar(100));
Query OK, 0 rows affected (0.46 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable748 values(100,'John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable748 values(100,'Sam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable748 values(200,'Carol');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable748 values(200,'Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable748 values(300,'Mike');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable748 values(300,'Sam');
Query OK, 1 row affected (0.15 sec)

3. 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable748;

실행 결과는 다음과 같습니다.

+------+-----------+
| Id   | FirstName |
+------+-----------+
|  100 | John      |
|  100 | Sam       |
|  200 | Carol     |
|  200 | Carol     |
|  300 | Mike      |
|  300 | Sam       |
+------+-----------+
6 rows in set (0.00 sec)

위 결과를 보면 Id가 200이고 FirstName이 Carol인 행이 두 번 등장하는 것을 확인할 수 있습니다.

4. 중복 값 쌍을 찾는 쿼리 실행하기

다음은 MySQL에서 중복 값 쌍을 찾기 위한 쿼리입니다. Id와 FirstName을 기준으로 그룹화한 뒤, 해당 그룹의 행 수가 2개인 경우만 필터링합니다.

mysql> select Id from DemoTable748
    group by Id,FirstName having count(*)=2;

Id와 FirstName의 조합이 중복되는 값은 200(Carol) 하나뿐이므로, 아래와 같은 결과가 출력됩니다.

+------+
| Id   |
+------+
| 200  |
+------+
1 row in set (0.00 sec)

핵심 포인트 정리

중복 검사 대상 컬럼들을 GROUP BY 뒤에 나열하고, HAVING COUNT(*) > 1 또는 HAVING COUNT(*) = 2 조건을 적용하면 원하는 중복 쌍만 정확히 추출할 수 있습니다. 만약 두 번 이상 중복된 모든 경우를 찾고 싶다면 count(*)=2 대신 count(*)>1을 사용하는 것이 좋습니다.