(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 로 제거할 수는 없다. 이 부분에 대해서는 서브쿼리를 사용한다든지 하는 다른 해결방법을 찾는것이 좋을것 같다.
#dev
#DISTINCT
#MySQL
#SQL
#sql distinct
#중복제거