MySQL에서는 DISTINCT 절을 하나의 열이 아닌 여러 열에도 적용할 수 있습니다. 이 경우 결과 집합에서 행의 고유성은 단일 열의 값이 아니라 지정된 모든 열 값의 조합을 기준으로 판단됩니다.
예제: 테이블 준비
다음과 같이 10개의 행을 가진 'testing' 테이블이 있다고 가정해 보겠습니다.
mysql> select * from testing; +------+---------+---------+ | id | fname | Lname | +------+---------+---------+ | 200 | Raman | Kumar | | 201 | Sahil | Bhalla | | 202 | Gaurav | NULL | | 203 | Aarav | NULL | | 204 | Harshit | Khurana | | 205 | Rahul | NULL | | 206 | Piyush | Kohli | | 207 | Lovkesh | NULL | | 208 | Gaurav | Kumar | | 209 | Raman | Kumar | +------+---------+---------+ 10 rows in set (0.00 sec)
DISTINCT를 두 개의 열에 적용하기
이제 'Fname'과 'Lname'이라는 두 개의 열에 DISTINCT 절을 적용해 보겠습니다. 그러면 두 열 값의 조합을 기준으로 중복이 제거된 고유한 행들만 반환됩니다.
mysql> Select DISTINCT FNAME,LNAME from testing2; +---------+---------+ | FNAME | LNAME | +---------+---------+ | Raman | Kumar | | Sahil | Bhalla | | Gaurav | NULL | | Aarav | NULL | | Harshit | Khurana | | Rahul | NULL | | Piyush | Kohli | | Lovkesh | NULL | | Gaurav | Kumar | +---------+---------+ 9 rows in set (0.00 sec)
결과 분석
원래 테이블에는 10개의 행이 있었지만, 쿼리 결과로는 9개의 행만 반환되었습니다. 그 이유는 'Raman Kumar' 조합이 두 번(id 200과 id 209) 존재했기 때문입니다. 두 열의 값 조합이 완전히 동일한 행은 하나로 합쳐지며, 나머지 행들은 각각 고유한 조합을 가지므로 그대로 유지됩니다.
즉, 여러 열에 DISTINCT를 사용하면 각 열 개별적으로가 아니라 열들의 전체 조합이 동일한 경우에만 중복으로 간주된다는 점을 기억하시기 바랍니다.