개요
2022.09.13 - [MySQL] 중복 데이터 Select에서 확인한 중복 데이터는 제외하고, 데이터를 신규 테이블에 SELECT INSERT 하려고 한다.
중복 키 에러가 발생하는 경우 무시하는 INSERT IGNORE 구문도 사용할 수 있겠지만, 이 글에서는 중복 데이터를 제외한 전체 데이터를 SELECT 하는 방법을 사용하려고 한다.
예시
테이블 스키마
# 기존 테이블 스키마
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로 설정되어 있기 때문에 두 컴럼 모두가 동일한 값을 가질 수 없다.
중복 데이터를 제외한 전체 데이터 SELECT
2022.09.13 - [MySQL] 중복 데이터 Select 에서 GROUP BY ~ HAVING 구문을 이용해서 중복 데이터만을 조회했었다. 이 구문에서 중복 데이터를 필터링하는 HAVING 구문만 삭제하면 된다.
SELECT column,
column,
column
FROM table
GROUP BY column,
column,
column
;
# 예시
SELECT id,
rev
FROM docs
GROUP BY id,
rev
;