2014/08/13 - [DB/MSSQL] - MS-SQL SELECT 쿼리로 한꺼번에 다른 테이블에 INSERT 하기 (INSERT ... SELECT ... FROM ...)
이번에는 기존에 데이터가 쌓여있는 테이블의 존재하는 모든 데이터를 일괄로 신규로 생성한 테이블에 옮기고자 할때 INSERT ... SELECT ... FROM 을 이용하여 데이터를 이관할 수 있다.
우선 2가지 테이블이 존재한다고 가정하자
* TEMP_TABLE (기존에 데이터가 쌓여있는 테이블)
create table temp_table( id varchar(10), title varchar(20), flag varchar(1) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
* TEMP_TABLE에 들어갈 가상의 데이터 INSERT
insert into temp_table(id,title,flag) values('1','제목1','Y'); insert into temp_table(id,title,flag) values('2','제목2','N'); insert into temp_table(id,title,flag) values('3','제목3','Y'); insert into temp_table(id,title,flag) values('4','제목4','Y'); insert into temp_table(id,title,flag) values('5','제목5','N'); insert into temp_table(id,title,flag) values('6','제목6','Y'); insert into temp_table(id,title,flag) values('7','제목7','Y'); insert into temp_table(id,title,flag) values('8','제목8','N'); insert into temp_table(id,title,flag) values('9','제목9','Y');
* REAL_TABLE (신규로 특정 컬럼만 이관하기 위한 테이블)
create table real_table( id varchar(10), title varchar(20) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
※ 위와같이 2개의 테이블 생성한 후 temp_table에만 데이터를 넣어놓은 상태이다
temp_table -> real_table에 id,title 컬럼만 일괄로 넣고자 한다.
하지만 조건으로 flag값이 'N'인 데이터만 넣고자 한다.
그렇다면 결론적으로 real_table에 들어가야 하는 데이터들은
id값이 2,5,8 인 데이터들만 들어가야 할 것이다 .
* INSERT ... SELECT ... FROM 실행
INSERT real_table(id,title) SELECT id,title FROM temp_table WHERE flag = 'N'
* 실행 결과
위와 같이 정상적으로 temp_table의 데이터 중 flag값이 'N' 인 3개의 데이터들이 id,title값만 real_table 테이블에 데이터가 제대로 들어가는 것을 확인 할 수 있다.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
MySQL - 널체크(IFNULL 사용하기) (0) | 2014.08.23 |
---|---|
MySQL LIMIT를 사용하여 페이징쿼리를 동작시켜보자 (0) | 2014.08.15 |
MySQL 인코딩 UTF-8 설정하기 [한글깨짐문제 해결] (7) | 2014.08.12 |
MySQL 시퀀스 auto_increment 생성 및 초기화하기 (0) | 2014.08.11 |
MySQL 대소문자 구분 안하기 - lower_case_table_names 변경 (7) | 2014.07.10 |