실무에서는 하나의 열에 동일한 값이 여러 번 저장되는 경우가 흔합니다. 예를 들어 직원 테이블에 'Chris Brown'이라는 이름을 가진 직원이 두 명 이상 있을 수 있습니다. 이럴 때 WHERE 절에 여러 조건을 AND로 결합하면 원하는 특정 행만 정확하게 조회할 수 있습니다.
이 글에서는 중복된 이름 값이 존재하는 MySQL 테이블에서 특정 행을 가져오는 방법을 예제와 함께 단계별로 살펴보겠습니다.
1단계: 데모 테이블 생성
먼저 직원 정보를 저장할 테이블을 생성합니다. EmployeeId는 자동 증가되는 기본 키로 설정합니다.
mysql> create table DemoTable1431
-> (
-> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName varchar(20),
-> EmployeeCountryName varchar(20)
-> );
Query OK, 0 rows affected (0.62 sec)
2단계: 샘플 데이터 삽입
INSERT 문을 사용해 몇 개의 레코드를 추가합니다. 여기서 의도적으로 'Chris Brown'이라는 이름을 두 번 입력하여 중복 상황을 만들어 보겠습니다.
mysql> insert into DemoTable1431(EmployeeName,EmployeeCountryName) values('Adam Smith','AUS');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1431(EmployeeName,EmployeeCountryName) values('Chris Brown','US');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1431(EmployeeName,EmployeeCountryName) values('John Doe','UK');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1431(EmployeeName,EmployeeCountryName) values('Chris Brown','AUS');
Query OK, 1 row affected (0.17 sec)3단계: 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 현재 저장된 데이터를 확인합니다.
mysql> select * from DemoTable1431;
실행 결과는 다음과 같습니다.
+------------+--------------+---------------------+
| EmployeeId | EmployeeName | EmployeeCountryName |
+------------+--------------+---------------------+
| 1 | Adam Smith | AUS |
| 2 | Chris Brown | US |
| 3 | John Doe | UK |
| 4 | Chris Brown | AUS |
+------------+--------------+---------------------+
4 rows in set (0.00 sec)
출력 결과를 보면 EmployeeId 2번과 4번 모두 'Chris Brown'이라는 동일한 이름을 가지고 있습니다. 하지만 국가 코드는 서로 다릅니다. 하나는 'US', 다른 하나는 'AUS'입니다.
4단계: WHERE 절로 특정 행 조회하기
중복된 이름 중에서 원하는 행만 정확히 가져오려면, WHERE 절에서 이름과 국가명 두 조건을 AND 연산자로 결합하면 됩니다. 아래 쿼리는 이름이 'Chris Brown'이면서 국가가 'AUS'인 행만 조회합니다.
mysql> select * from DemoTable1431 where EmployeeName='Chris Brown' and EmployeeCountryName='AUS';
실행 결과는 다음과 같습니다.
+------------+--------------+---------------------+
| EmployeeId | EmployeeName | EmployeeCountryName |
+------------+--------------+---------------------+
| 4 | Chris Brown | AUS |
+------------+--------------+---------------------+
1 row in set (0.00 sec)
정리
열 값이 중복되더라도 WHERE 절에 여러 조건을 AND로 조합하면 고유한 특정 행을 손쉽게 조회할 수 있습니다. 만약 조건으로 사용할 수 있는 다른 열이 없다면, 기본 키인 EmployeeId를 직접 지정하는 방법(WHERE EmployeeId = 4)도 좋은 대안이 됩니다. 실무에서는 이처럼 복합 조건을 활용해 정확한 데이터를 추출하는 것이 중요합니다.