SQL Insert Into Select

时间:2020-02-23 14:32:29  来源:igfitidea点击:

在SQL的真实世界中,想象一下是否存在需要将数据从一个表复制到另一个表的情况。
SQL对此有一个答案,答案是"将SQL插入到Select中"。

SQL Insert Into Select 语句

当我们要将数据从一个表复制到另一表时,将使用SQL Insert Into Select子句。

SQL Insert Into Select 规则

  • INSERT INTO SELECT要求源表和目标表中的数据类型匹配。

  • 目标表中的现有记录不受影响。

SQL Insert Into Select 语法

INSERT INTO table2 (column1, column2, ... , columnN)
SELECT c1, c2, ... , cn FROM table1
WHERE condition;

在上述语法中,使用SELECT语句选择来自table1的数据,然后使用INSERT语句将其插入到table2中。

SQL Insert Into Select 示例

让我们考虑下表,以了解将SQL插入到Select语句中。

老师

TeacherIdTeacherNameStateCountry
1AmitBengaluruSan Franceco
2HarryTexasUS
3JohnLondonUK

学生

StudentIdStudentNameStateCountry
1HenryWalesUK
2RohitDelhiSan Franceco
3SteveLondonUK

查询表:

CREATE TABLE `teacher` (
`TeacherId` INT NOT NULL,
`TeacherName` VARCHAR(45) NULL,
`State` VARCHAR(45) NULL,
`Country` VARCHAR(45) NULL,
PRIMARY KEY (`TeacherId`),
UNIQUE INDEX `TeacherId_UNIQUE` (`TeacherId` ASC) VISIBLE);

CREATE TABLE `student` (
`StudentId` INT NOT NULL,
`StudentName` VARCHAR(45) NULL,
`State` VARCHAR(45) NULL,
`Country` VARCHAR(45) NULL,
PRIMARY KEY (`StudentId`),
UNIQUE INDEX `StudentId_UNIQUE` (`StudentId` ASC) VISIBLE);

Insert into Teacher(TeacherId,TeacherName,State,Country) VALUES (1, 'Amit','Bengaluru','San Franceco'), (2, 'Harry','Texas','US'), (3, 'John','London','UK');
Insert into Student(StudentId,StudentName,State,Country) VALUES (1, 'Henry','Wales','UK'), (2, 'Rohit','Delhi','San Franceco'), (3, 'Steve','London','UK');

让我们假设一个案例,来自旧金山的学生在同一所学院获得教职。
在这种情况下,需要将旧金山学生的数据复制到"教师"表中的数据。

Insert into Teacher (TeacherId,TeacherName,State,Country)
Select 4,StudentName,State,Country from Student where country = 'San Franceco';

请注意,已经有一个ID为2的教师,因此我们使用"选择4"为复制到教师表的学生数据使用不同的ID。