작성
·
726
0
count(*)의 의미는 아는데 >1을 하는게 어떻게 유니크한 값을 볼 수 있는건지 이해가 안됩니다
답변 2
0
0
안녕하십니까,
특정 컬럼값으로 group by count(*)를 했을 때 count가 1보다 크면 유니크 하지 않습니다.
아래와 같이 컬럼 col_a 의 값이 유니크 하다면
col_a
'길동'
'춘향'
'몽룡'
select col_a, count(*) from table group by col_a 를 수행하면
'길동' 1
'춘향' 1
'몽룡' 1
과 같이 개별 값 별로 count 1이 추출됩니다.
하지만
컬럼 col_a 의 값이 아래와 같이 유니크 하지 않다면
col_a
'길동'
'춘향'
'춘향'
결과는 아래와 같이 1보다 큰 값이 count로 추출됩니다.
'길동' 1
'춘향' 2
감사합니다.
select distinct(col_a)와 select col_a, count(*) group by col_a having count(*) > 1 은 목적이 다릅니다.
select distinct(col_a)는 무조건 중복을 제거하여 출력하는 것입니다. 반면에 select col_a, count(*) group by col_a having count(*) > 1 은 중복값이 있는지 여부를 판단해서 중복 값이 있으면 해당 컬럼이 pk가 아니라는 것을 판단하는 것입니다.