Database

[MySql] DISTINCT , GROUP BY

k9e4h 2018. 5. 10. 21:40

DISTINCT의 결과를 정렬된 결과가 아니지만, GROUP BY는 정렬된 결과를 보내준다.
GROUP BY의 작업을 크게 "그룹핑" + "정렬"로 나누어서 본다면, DISTINCT는 "그룹핑" 작업만
수행하고 "정렬" 작업은 수행하지 않는 것이다.
그런데, 여기서 "정렬"은 "그룹핑" 과정의 산물이 아닌 부가적인 작업이다.


<<주의사항>>
가끔 어떤 사용자는 DISTINCT가 마치 함수인 것처럼 (괄호를 사용하여) 아래와 같이 사용을 하는데
만약 fd1 컬럼은 unique 값, fd2는 전체 값을 원한다면 절대 그 결과를 얻을 수 없다.


SELECT DISTINCT(fd1), fd2 FROM tab;

SELECT 문장에 DISTINCT라는 키워드가 있으면, MySQL은 SELECT되는 모든 컬럼(튜플)들에 대해서 DISTINCT를 적용해서 결과를 보내주게 된다.
위와 같은 요건을 처리하기 위해서도 아래와 같이 GROUP BY로만 해결할 수 있다.

http://intomysql.blogspot.kr/2011/01/distinct-group-by.html



DISTINT가 아니라 GROUP BY를 사용해야하는 경우

1. https://okky.kr/article/327299

2. 집합 함수를 사용해야 할 때


반응형

'Database' 카테고리의 다른 글

[MySql] 암호화된 데이터 like 검색하기  (0) 2018.11.12
[MyBatis] foreach  (0) 2018.05.25
[MySql] INDEX  (0) 2018.05.08
[MySQL] Transaction과 Loack  (0) 2018.03.22
[MySql] ON DUPLICATE KEY UPDATE & VALUES  (0) 2018.03.20