상품구매 테이블 스키마는 아래와 같고,
---------------------------
pk 구매자번호
pk 상품번호
pk 상품대분류
pk 상품중분류
pk 상품소분류
구매갯수
---------------------------
상품구매 테이블 데이터는 아래와 같은데요
| 구매자번호 | 상품번호 | 상품대분류 | 상품중분류 | 상품소분류 | 구매갯수 |
| 1 | 3 | A | a | 0 | 1 |
| 1 | 10 | A | a | 0 | 3 |
| 1 | 2 | A | a | 0 | 1 |
| 1 | 2 | A | a | 0 | 2 |
| 2 | 3 | A | a | 0 | 2 |
| 2 | 10 | A | a | 0 | 4 |
| 2 | 2 | A | a | 0 | 3 |
| 2 | 3 | A | a | 0 | 2 |
| 3 | 10 | A | a | 0 | 1 |
보통 데이터 중복체크는 group by 를 pk로 묶어서 중복된게 없는지 확인하나요?
위처럼 구매자번호/상품번호/상품대분류/상품중분류/상품소분류가 pk가 된다면 같은 구매자가 같은 상품을 구매하면 당연히 pk가 겹칠수밖에 없다는 생각이 들었는데요.
혹시나 상품번호가 상품시리얼번호면 pk로 잡는게 말이 된다는 생각에..
select 구매자번호, 상품번호, 상품대분류, 상품중분류, 상품소분류, count(*)
from 상품구매테이블
group by 구매자번호, 상품번호, 상품대분류, 상품중분류, 상품소분류
having count(*) > 1
해도 갯수가 1초과로 잡히더라구요..
그런데 이 방식으로 중복체크하는게 맞을까요? (저는 https://learnsql.com/blog/how-to-find-duplicate-values-in-sql/ 참조하였습니다)
혹시 일반적으로 데이터 중복체크는 어떻게 하시나요?
pk가 중복이라면 pk가 disabled 상태인건 아닐까요?