본문 바로가기

DataBase/Mysql

[ mysql ] select insert 문법 + duplicate key 기본키 중복 해결

반응형

안녕하세요 코띵입니다 :D

 

프로젝트를 진행하던 중에 select insert 문법을 써야돼서 사용하려는데,

기본키에 auto_increment 가 적용되어 있지 않아서 문제가 발생했습니다.

 

그래서 이를 해결하는 방법을 찾아서 포스팅해보려고 합니다.

 

하나의 테이블에서 select 하여 어떤 테이블로 insert 하고 싶을 경우에 아래와 같이 실행하면 됩니다.

 

insert into 테이블A (
    컬럼명1,
    컬럼명2,
    컬럼명3
)
select 컬럼명4, 컬럼명5, 컬럼명6 from 테이블B

 

( 이 때, insert 와 select 사이의 컬럼 개수는 동일해야합니다. )

저 구문을 실행할 때 키를 포함하고 있지 않으면 문제될 것은 없습니다.

하지만 컬럼값의 기본키를 반드시 넣어야하는 경우라면 기본키 값을 증가시키면서 데이터를 insert 해야합니다.

 

반응형

 

저는 아래와 같은 방법으로 해결하였습니다.

 

SET @maxSeq := (SELECT IFNULL(MAX(키컬럼), 0) FROM 테이블A);
insert into 테이블A (키컬럼, 컬럼1, 컬럼2, 컬럼3)
select @maxSeq:=@maxSeq+1, 컬럼4, 컬럼5, 컬럼6
from 테이블B

 

maxSeq 는 임의로 정한 이름입니다. 테이블A에서 키의 최댓값을 maxSeq에 넣고, select 할 때 값을 1씩 증가시켜 조회합니다.

결국에는 차례로 1씩 증가한 키값이 insert 되게 됩니다.

 

감사합니다.

 

반응형