insert...select
时间: 2023-11-08 18:49:50 浏览: 50
Insert...select语句用于将一个表中的数据插入到另一个表中。它有几种不同的形式可以使用。
1. INSERT INTO SELECT语句:该语句可以指定要插入的目标表和要选择的源表的字段。例如:INSERT INTO Table2(field1, field2, ...) SELECT value1, value2, ... FROM Table1 [WHERE condition]。在这种情况下,目标表Table2必须存在,可以插入源表Table1的字段以及常量值。
示例:
INSERT INTO user2 (name, sex) SELECT name, 1 FROM user1 WHERE id = 1;
INSERT INTO user2 SELECT * FROM user1;
2. SELECT INTO FROM语句:该语句用于创建一个新表并将源表的指定字段复制到新表中。语法为:SELECT value1, value2 INTO Table2 FROM Table1。在这种情况下,目标表Table2不能存在,因为在插入时会自动创建Table2并复制数据。
示例:
SELECT name, age INTO t1 FROM t2;
3. 从一个数据库到另一个数据库:该语句用于将一个数据库中的数据插入到另一个数据库中的表中。语法为:INSERT INTO database_name.schema_name.table_name(column_name) SELECT (column_name) FROM database_name.schema_name.table_name WHERE condition。
示例:
INSERT INTO test.user2 (name, sex) SELECT name, 1 FROM wb.user1 WHERE id = 1;
需要注意的是,当数据量较大时,INSERT INTO SELECT语句可能会锁定表。在线上环境中使用时请谨慎,并考虑使用索引来避免全表扫描以及避免锁表的情况发生。