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语句中。
老师
TeacherId | TeacherName | State | Country |
---|---|---|---|
1 | Amit | Bengaluru | San Franceco |
2 | Harry | Texas | US |
3 | John | London | UK |
学生
StudentId | StudentName | State | Country |
---|---|---|---|
1 | Henry | Wales | UK |
2 | Rohit | Delhi | San Franceco |
3 | Steve | London | UK |
查询表:
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。