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 |