2011-10-06 101 views
0

我有一個sql語句,它是將兩個值插入表(值表示字段)的例程插入。這些是ints/nvarchars。帶有子查詢的SQL插入

但是,對於表的第三個字段(可以爲null),我想在表中插入最大行數+1。我該怎麼做?

編輯:

表是這樣的

Postcode Active ID 
NULL  1  14 
+0

我可以幫你,但請寫下一個數據樣本:T1,T2和T3。 – danihp

+1

這聽起來像是一個「自己動手」的身份領域,這是一個**糟糕的想法** – JNK

+0

@JNK也許他想存儲行數(這不一定與最大身份值相同)在插入時。 –

回答

1

該代碼向您展示瞭如何完成這項工作,以及如果您需要將ID作爲表中的唯一值,可以解決哪些問題。還有更多的情況下,你可能會重複。一個是兩個用戶同時向表中添加行。

declare @T table(Postcode varchar(5), Active bit, ID bigint) 

insert into @T (Postcode, Active, ID) 
select '1111', 1, count(*)+1 
from @T 

insert into @T (Postcode, Active, ID) 
select '2222', 0, count(*)+1 
from @T 

delete from @T where Postcode = '1111' 

insert into @T (Postcode, Active, ID) 
select '3333', 0, count(*)+1 
from @T 

select * 
from @T 

結果:

Postcode Active ID 
-------- ------ -------------------- 
3333  0  2 
2222  0  2 

如果您需要的值是唯一的,你應該使用identity柱代替。也許甚至可以把它作爲主鍵,或者至少在ID列上添加一個唯一的約束。

0

我假設你正在使用SQL Server的工作,因爲你還沒有另外規定。

INSERT INTO Table_1 (col1, col2, col3) 
     VALUES (15, 'info', 1 + (SELECT COUNT(*) FROM Table_1)) 

您應該知道這會增加插入操作的費用。