select *?into?destTbl from srcTbl
insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl
insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl
以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的:
- 第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。
- 第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量,如例中的:5。
- 根据以上区别:第二句用法destTbl表与srcTbl表可以为同一张表。
1.INSERT INTO SELECT语句
??????语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
?????要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:
???--1.创建测试表
????create?TABLE?Table1
????(
????????a?varchar(10),
????????b?varchar(10),
????????c?varchar(10),
????????CONSTRAINT?[PK_Table1]?PRIMARY?KEY?CLUSTERED
????????(
????????????a?ASC
????????)
????)?ON?[PRIMARY]
????create?TABLE?Table2
????(
????????a?varchar(10),
????????c?varchar(10),
????????d?