개요
테이블 스키마 수정 작업을 위핸 SELECT INSERT를 하려고 했더니, 중복 키 에러가 발생하면서 데이터 복사가 불가능한 상황이다.
중복 데이터가 몇 개인지 확인해보도록 한다.
예시
테이블 스키마
# 기존 테이블 스키마
CREATE TABLE IF NOT EXISTS `docs` (
`id` int(6) unsigned NOT NULL,
`rev` int(3) unsigned NOT NULL,
`content` varchar(200) NOT NULL
) DEFAULT CHARSET=utf8;
# 신규 테이블 스키마
CREATE TABLE IF NOT EXISTS `docs` (
`id` int(6) unsigned NOT NULL,
`rev` int(3) unsigned NOT NULL,
`content` varchar(200) NOT NULL,
PRIMARY KEY (`id`,`rev`)
) DEFAULT CHARSET=utf8;
현재 docs 테이블의 데이터 현황
SELECT *
FROM docs
;
신규 테이블에서 id, rev 컬럼이 PK로 설정되어 있기 때문에 두 컬럼 모두가 동일한 값을 가질 수 없다.
중복 확인
GROUP BY와 HAVING 절을 이용한다.
SELECT column,
column,
column,
count(1) -- 중복 데이터 수
FROM table
GROUP BY column,
column,
column
HAVING count(1) > 1
# 예시
SELECT id,
rev,
count(1)
FROM docs
GROUP BY id,
rev
HAVING count(1) > 1
;
참고 문서
https://dzzienki.tistory.com/39