MySQL 쿼리에서 DISTINCT 절과 함께 WHERE 절을 사용하면, 결과 집합에서 고유한(중복 없는) 행을 반환할 기준 조건을 지정할 수 있습니다. 즉, WHERE 절의 조건을 만족하는 행들만 대상으로 중복이 제거된 고유한 값들이 반환됩니다.
또한 DISTINCT 절과 함께 LIMIT 절을 사용하면, 서버가 반환할 고유한 행의 최대 개수를 제한할 수 있습니다. 이는 대량의 데이터에서 필요한 만큼의 고유한 값만 효율적으로 가져오고자 할 때 매우 유용합니다.
예제
다음은 'testing'이라는 테이블에 WHERE 절과 LIMIT 절을 DISTINCT와 함께 적용한 예입니다.
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) mysql> Select DISTINCT Lname from testing where Lname IS NOT NULL limit 3; +---------+ | Lname | +---------+ | Kumar | | Bhalla | | Khurana | +---------+ 3 rows in set (0.00 sec)
위 예제에서 볼 수 있듯이, WHERE Lname IS NOT NULL 조건으로 성(Lname)이 NULL인 행을 먼저 제외한 뒤, DISTINCT로 중복을 제거하고, 마지막으로 LIMIT 3을 통해 고유한 성 값 세 개만 반환되었습니다. 이처럼 세 절을 조합하면 조건 필터링 → 중복 제거 → 개수 제한 순으로 동작하여 원하는 결과를 정확하게 얻을 수 있습니다.