INSERT INTO SELECT 문을 사용하여 한 테이블에서 다른 테이블로 행을 이동할 수 있습니다.
구문은 다음과 같습니다 -
insert into yourDestinationTableName select *from yourOriginalTable where someCondition
위의 구문을 이해하려면. 테이블을 만들어 봅시다. 다음은 테이블을 생성하는 쿼리입니다 -
mysql> create table StudentTable −> ( −> Id int, −> Name varchar(100) −> ); Query OK, 0 rows affected (0.65 sec)
이제 두 번째 테이블을 생성하겠습니다. 쿼리는 다음과 같습니다 -
mysql> create table Employee −> ( −> EmployeeId int −> , −> EmployeeName varchar(100) −> ); Query OK, 0 rows affected (0.54 sec)
Employee 테이블에 일부 레코드를 삽입합니다. 레코드를 삽입하는 쿼리는 다음과 같습니다 -
mysql> insert into Employee values(1,'Carol'); Query OK, 1 row affected (0.18 sec) mysql> insert into Employee values(2,'John'); Query OK, 1 row affected (0.16 sec) mysql> insert into Employee values(3,'Johnson'); Query OK, 1 row affected (0.11 sec)
이제 SELECT 문을 사용하여 Employee 테이블의 모든 레코드를 표시할 수 있습니다. 쿼리는 다음과 같습니다.
mysql> select *from Employee;
다음은 출력입니다 -
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 1 | Carol | | 2 | John | | 3 | Johnson | +------------+--------------+ 3 rows in set (0.00 sec)
다른 테이블의 행을 이동하려면 처음에 논의한 구문을 구현하십시오. 아래 쿼리는 Employee 테이블에서 StudentTable로 행을 이동합니다. -
mysql> insert into StudentTable select *from Employee where EmployeeId = 3 and EmployeeName = 'Johnson'; Query OK, 1 row affected (0.17 sec) Records: 1 Duplicates: 0 Warnings: 0
이제 두 번째 테이블인 'StudentTable'에 행이 존재하는지 확인할 수 있습니다. 쿼리는 다음과 같습니다 -
mysql> select *from StudentTable;
다음은 출력입니다 -
+------+---------+ | Id | Name | +------+---------+ | 3 | Johnson | +------+---------+ 1 row in set (0.00 sec)
위의 샘플 출력을 보면 한 테이블에서 다른 테이블로 행을 이동했습니다. 모든 행을 이동하려면 "where" 조건만 제거하면 됩니다. 쿼리는 다음과 같습니다 -
mysql> insert into StudentTable select *from Employee; Query OK, 3 rows affected (0.15 sec) Records: 3 Duplicates: 0 Warnings: 0
쿼리는 StudentTable의 모든 업데이트된 레코드를 표시합니다. -
mysql> select *from StudentTable;
다음은 출력입니다 -
+------+---------+ | Id | Name | +------+---------+ | 1 | Carol | | 2 | John | | 3 | Johnson | +------+---------+ 3 rows in set (0.00 sec)