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

MySQL DISTINCT 절을 여러 열에 적용하는 방법

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를 사용하면 각 열 개별적으로가 아니라 열들의 전체 조합이 동일한 경우에만 중복으로 간주된다는 점을 기억하시기 바랍니다.