Insert into Table1从Table2中选择x,y,z,其中x = 1

时间:2015-02-16 22:56:41

标签: sql-server tsql

在mssql中可以运行此查询:

Insert Into Table1 Select x, y, z From Table2 Where x = 1

当Table1的id列为identity&自动递增

我收到以下错误:

Msg 8101,Level 16,State 1,Line 1 表格' table1'中的标识列的显式值只能在使用列列表且IDENTITY_INSERT为ON时指定。

2 个答案:

答案 0 :(得分:1)

它应该像

一样简单
Insert Into Table1 (x, y, z)  --<-- Explicitly mention the column names
Select x, y, z 
From Table2 
Where x = 1

您无需在任何地方提及ID列,它会自动生成您的Identity值并插入该列。

答案 1 :(得分:0)

您必须打开IDENTITY_INSERT以插入身份,然后在完成后将其关闭。这就是语法的样子。

SET IDENTITY_INSERT Table1 ON;

Insert Into Table1 (column1A, column1B, column1C)
    Select Column2A, Column2B, Column2C
       From Table 2
          Where Column2A = 1;

SET IDENTITY_INSERT Table1 OFF;