DB/MySQL

[MySQL] 중복 제거문 DISTINCT, GROUP BY

야곰야곰+책벌레 2021. 4. 20. 16:33
728x90
반응형

SELECT 문을 실행하다 보면 여러 개의 같은 데이터를 반환하게 된다. 이때 중복된 데이터를 제거하고 싶다면 DISTINCT나 GROUP BY를 사용하면 된다. 예를 들어 아래와 같은 TABLE이 있다고 가정하자.

 

machID가 01인 Machine을 불러오는 Query를 작성해 보자.

SELECT FIELD명 FROM TABLE명 WHERE machID='01';

Query를 전송하면 다음과 같은 결과를 나타나는데, 이때 '01'이라는 값이 중복되어 호출된다. 이러한 중복을 제거하기 위해서 사용하는 SQL 명령어가 DISTINCT, GROUP BY이다.

 

e.g) DISTINCT문

SELECT DISTINCT FIELD명 FROM TABLE명 WHERE machID='01';

 

e.g) GROUP BY문

SELECT FIELD명 FROM TABLE명 WHERE machID='01' GROUP BY machID;

그렇다면 동일 기능을 하는 두 구문의 차이는 무엇일까?

  • DISTINCT : 중복을 없애주지만 정렬을 하지는 않는다.
  • GROUP BY : 중복을 없애주고 정렬도 해준다.
GROUP BY 가 하는 일이 더 많기 때문에 속도면에서 불리할 수 있으므로 상황에 맞게 사용하면 될 것이다.
728x90
반응형