我有一个sql语句,它是将两个值插入表(值表示字段)的例程插入。这些是ints/nvarchars。带有子查询的SQL插入
但是,对于表的第三个字段(可以为null),我想在表中插入最大行数+1。我该怎么做?
编辑:
表是这样的
Postcode Active ID
NULL 1 14
我有一个sql语句,它是将两个值插入表(值表示字段)的例程插入。这些是ints/nvarchars。带有子查询的SQL插入
但是,对于表的第三个字段(可以为null),我想在表中插入最大行数+1。我该怎么做?
编辑:
表是这样的
Postcode Active ID
NULL 1 14
该代码向您展示了如何完成这项工作,以及如果您需要将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列上添加一个唯一的约束。
我假设你正在使用SQL Server的工作,因为你还没有另外规定。
INSERT INTO Table_1 (col1, col2, col3)
VALUES (15, 'info', 1 + (SELECT COUNT(*) FROM Table_1))
您应该知道这会增加插入操作的费用。
我可以帮你,但请写下一个数据样本:T1,T2和T3。 – danihp
这听起来像是一个“自己动手”的身份领域,这是一个**糟糕的想法** – JNK
@JNK也许他想存储行数(这不一定与最大身份值相同)在插入时。 –