Database

[MySQL] 중복 데이터 SELECT

비번변경 2022. 9. 13. 19:28

개요

테이블 스키마 수정 작업을 위핸 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