带子查询的SQL插入

时间:2011-10-06 13:15:39

标签: tsql

我有一个sql语句,它是两个值到表中的常规插入(值表示字段)。这些是ints / nvarchars。

但是,对于表的第3个字段(可以为null),我想在表中插入最大行数+ 1.我该怎么做?

编辑:

表就是这样

Postcode  Active ID
NULL       1      14

2 个答案:

答案 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))

您应该知道这会增加插入操作的费用。