Database

[MySQL] 중복 데이터 제외 전체 데이터 SELECT

비번변경 2022. 9. 14. 18:29

개요

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
;

중복 데이터를 제외한 전체 데이터 SELECT