我有一个sql语句,它是两个值到表中的常规插入(值表示字段)。这些是ints / nvarchars。
但是,对于表的第3个字段(可以为null),我想在表中插入最大行数+ 1.我该怎么做?
编辑:
表就是这样
Postcode Active ID
NULL 1 14
答案 0 :(得分: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列上添加唯一约束。
答案 1 :(得分:0)
我假设你正在使用SQL Server,因为你没有另外指定。
INSERT INTO Table_1 (col1, col2, col3)
VALUES (15, 'info', 1 + (SELECT COUNT(*) FROM Table_1))
您应该知道这会增加插入操作的费用。