使用 INSERT 和 SELECT 子查询插入行
INSERT 语句中的 SELECT 子查询可用于将一个或多个表或视图中的值添加到另一个表中。使用 SELECT 子查询还可以同时插入多行。
在以下示例中,INSERT
语句将 AdventureWorks
的 Sales.SalesReason
表中 SalesReason
为 Marketing
的所有行中的一些数据插入到一个单独的表中。
USE AdventureWorks; GO CREATE TABLE MySalesReason ( SalesReasonID int NOT NULL, Name nvarchar(50), ModifiedDate datetime); GO INSERT INTO MySalesReason SELECT SalesReasonID, Name, ModifiedDate FROM AdventureWorks.Sales.SalesReason WHERE ReasonType = N'Marketing'; GO SELECT SalesReasonID, Name, ModifiedDate FROM MySalesReason; GO
子查询的选择列表必须与 INSERT 语句的列列表匹配。如果没有指定列列表,选择列表必须与正在其中执行插入操作的表或视图的列匹配。
String insertsql = "insert into t_windowsDetails (applicationname,winname,devicename,"
+ "lx,ly,lwidth,lheight,lxunit,lyunit,px,py,pwidth,pheight,pxunit,pyunit,fontresize,fontadjust) "
+ "select '"
+ applicationname
+ "','default',"
+ "devicename,lx,ly,lwidth,lheight,lxunit,lyunit,px,py,pwidth,pheight,pxunit,pyunit,fontresize,fontadjust "
+ "from t_windowsDetails where applicationname='default' and winname='default' and devicename='"
+ devicename
+ "'";
上面的applicationname是java中的变量,‘default’是常量值。后面的是表中的列。这样拼接完成insert和select子查询。