MySQL 테이블에 여러 개의 중복 데이터가 저장되어 있을 때, 그중 특정 값에 해당하는 중복 레코드만 골라서 확인하고 싶은 경우가 있습니다. 이럴 때 LIKE 연산자를 사용하면 간단하게 원하는 레코드만 조회할 수 있습니다.
기본 문법
특정 중복 레코드만 표시하려면 아래와 같이 WHERE 절과 함께 LIKE 연산자를 사용합니다.
SELECT * FROM yourTableName
WHERE yourColumnName LIKE 'yourValue';
실습 예제
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (1.03 sec)
이제 INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다. 의도적으로 'John'과 'Chris'를 중복해서 넣겠습니다.
mysql> INSERT INTO DemoTable VALUES('John');
Query OK, 1 row affected (0.32 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('John');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES('Bob');
Query OK, 1 row affected (0.42 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.30 sec)SELECT 문으로 테이블의 전체 레코드를 확인해 보면 다음과 같습니다.
mysql> SELECT * FROM DemoTable;
실행 결과는 아래와 같습니다.
+-------+
| Name |
+-------+
| John |
| Chris |
| John |
| Bob |
| Chris |
+-------+
5 rows in set (0.00 sec)
특정 중복 레코드만 조회하기
전체 5개의 레코드 중에서 'John'이라는 이름이 중복된 레코드만 가져오고 싶다면, 다음과 같이 LIKE 연산자를 사용한 쿼리를 작성합니다.
mysql> SELECT * FROM DemoTable WHERE Name LIKE 'John';
위 쿼리를 실행하면 'John'에 해당하는 중복 레코드만 출력됩니다.
+------+
| Name |
+------+
| John |
| John |
+------+
2 rows in set (0.03 sec)
추가 팁
LIKE 연산자는 완전 일치뿐만 아니라 와일드카드(%)와 함께 사용하면 부분 일치 검색도 가능합니다. 예를 들어 WHERE Name LIKE 'J%'라고 작성하면 'J'로 시작하는 모든 이름을 조회할 수 있습니다. 또한 정확히 일치하는 값만 찾는 경우에는 = 연산자를 사용해도 동일한 결과를 얻을 수 있으며, 중복 레코드의 개수를 세고 싶다면 COUNT(*) 함수를 함께 활용하면 더욱 유용합니다.