(sql) Distinct 중복제거

SQL 쪽 공부를 최근에 벼락치기로 했는데, Distinct 에 대해서 약간의 이해가 안되서 정리할겸 올린다. 용어를 찾아보면 중복제거라고 하는데, 말 그대로다. 반대로 all 이라는 것이 있는데 이건 select 문에서 아무것도 지정하지 않아도 되는 것이다. 

예를 들어, 아래의 sql의 실행했다고 가정해 보자. 

select age, name







from test

 age

name 

 1

ash84 

 1

ash84 

 10

tom 

 10 

tom

중복이 된 결과가 나올수 있다. 이런 경우에 만약 중복을 제거 하고 싶다면, 

select distinct age, name

from test

 age

name 

 1

ash84 

 10 

tom

이렇게 실행이 되게 된다. 중복을 제거한다는 면에서 편한 키워드라고 생각 될수 있지만 주의할점이 있는데 select 문에서 가져오려는 컬럼 하나에 대해서 수행되지 않는다. 예를 들어, 아래와 같이 데이터가 있다고 하자. 

 age

name 

 1

ash84 

 10 

tom

 10  tim 

이런식으로 있다고 해서 10 이라는 값이 중복인데 distinct 로 제거할 수는 없다. 이 부분에 대해서는 서브쿼리를 사용한다든지 하는 다른 해결방법을 찾는것이 좋을것 같다.