3

嗨我想爲自動增量列的值填充從另一個表中插入一個表的值。下面是使用查詢IM和它拋出錯誤sql查詢插入到自動增量列的值

create table test12 
(
Id int, 
name varchar(255), 
dept varchar(255) 
) 

insert into test12 values(1,'f','cs'),(2,'b','cse'),(3,'c','cs'),(4,'d','cse'),(5,'e','cs'),(6,'f',null) 

select * from test12                

create table test34 
(
seq int identity(1,1) not null, 
name varchar(255) not null, 
dept varchar(255) default('cs') 
) 
insert into test34(seq,name,dept) values 
(1,(select name from test12), 
(select case when dept='cse' then 'Y' else 'N' end as dept from test12))   

請讓我什麼是你需要不給身份值錯誤

+2

,因爲他們要檢索的多行 –

+0

可能的複製[插入記錄到SQL表IDENTITY列(http://stackoverflow.com/questions/16766963/insert-你內心的查詢將無法正常工作記錄到SQL表,與身份列) – BIDeveloper

回答

3

列,它是自動添加的,只是排除標識列表格插入爲:

INSERT INTO test34 (name, dept) 
SELECT 
    name, 
    CASE WHEN dept = 'cse' THEN 'Y' ELSE 'N' END AS dept 
FROM test12 

如果您確實想手動添加標識值,請在SET語句下面嘗試。

SET IDENTITY_INSERT test34 ON; 

INSERT INTO test34 (seq, name, dept) 
SELECT 
    ID 
    name, 
    CASE WHEN dept = 'cse' THEN 'Y' ELSE 'N' END AS dept 
FROM test12 

SET IDENTITY_INSERT test34 OFF; 
1

可以打開ONOFFIDENTITY_INSERT

SET IDENTITY_INSERT test34 ON 

insert into test34(seq,name,dept) values 
(1,(select name from test12), 
(select case when dept='cse' then 'Y' else 'N' end as dept from test12)) 

SET IDENTITY_INSERT test34 OFF 
-1

無需爲自動增量列自動插入值,它會生成值。

insert into test34(name,dept) 
select name, Case when dept='cse' then 'Y' else 'N' end as dept from test12