반응형
안녕하세요 코띵입니다 :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 되게 됩니다.
감사합니다.
반응형
'DataBase > Mysql' 카테고리의 다른 글
[ mysql ] with recursive 문법 (+ 프로그래머스 특정 세대의 대장균 찾기) (0) | 2024.04.09 |
---|---|
[ mysql ] join using 과 on 차이(각각 어디에 적절한가?) (0) | 2023.05.24 |
[ mysql ] 예시로 보는 인덱스 (Index) 개념 완전 이해하기 (0) | 2023.01.05 |
[ mysql ] 기본키(Primary Key) 와 유니크키(Unique Key) 차이 (0) | 2022.01.25 |
[ mysql ] merge update insert (0) | 2020.06.16 |