问题
你想使用查询将一张表中的行复制到另一张表中。使用的查询可能很复杂,也可能很简单,但你的终极目标是将查询的结果插入另一张表中。例如,你想将 DEPT 表中的行复制到 DEPT_EAST 表中。假设 DEPT_EAST 表已经创建好,其结构与 DEPT 表相同(列数和列的数据类型都相同),但当前是空的。
解决方案
在 INSERT 语句中将生成所需行的查询用作值列表。
insert into dept_east (deptno,dname,loc)
select deptno,dname,loc
from dept
where loc in ( 'NEW YORK','BOSTON' )
扩展
只需在 INSERT 语句后面跟一个返回所需行的查询。如果要复制源表中所有的行,那么可以在查询中不指定 WHERE 子句。与常规插入一样,并非必须显式地指定要插入哪些列,但如果没有指定目标列,则必须在所有列中都插入数据,还必须注意 SELECT 列表中值的排列顺序。
点个赞吧,这对我非常重要!