MySQL INSERT INTO SELECT
마찬가지로 한 테이블 데이터를 다른 테이블에 삽입할 때 쓰입니다.
단 조건으로 아래와 같습니다.
- 목표 테이블의 데이터 유형이 일치
- 목표 테이블의 기존 레코드 영향 없음
INSERT INTO SELECT 구문
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
이렇게 구문이 이루어집니다.
목표 테이블은 table2이고 복사할 테이블은 table1입니다.
일부 열만 복사하고 싶으면 아래와 같습니다.
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
즉 table1의 특정 열(column1,...)을 복사합니다.
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
SupplierID | SupplierName | ContactName | Address | City | Postal Code | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
이와 같은 테이블이 있습니다.
공급자 테이블에서 고객 테이블로 복사하기 위해서는
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
대신 데이터 유형이 동일해야겠죠!!
또 모든 열을 복사하기 위해선
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROMSuppliers;
전체에 대해서 열을 모두 써줍니다.
마찬가지로 where 절을 써서 특정 조건에 해당하는 열만을 복사 할 수 있습니다.
'데이터베이스 > MySQL' 카테고리의 다른 글
MySQL 저장 프로시저 (0) | 2018.12.27 |
---|---|
MySQL CASE (0) | 2018.12.27 |
MySQL 테이블 복사 (0) | 2018.12.24 |
MySQL ANY/ALL (1) | 2018.12.24 |
MySQL EXISTS (0) | 2018.12.23 |