Tsql 带子查询的SQL插入

Tsql 带子查询的SQL插入,tsql,Tsql,我有一个sql语句,它是一个将两个值插入表(值表示字段)的例程。这些是ints/NVARCHAR 但是,对于表的第三个字段(可以为null),我想在表中插入最大行数+1。我该怎么做 编辑: 表是这样的 Postcode Active ID NULL 1 14 我假设您正在使用SQL Server,因为您没有另外指定 INSERT INTO Table_1 (col1, col2, col3) VALUES (15, 'info', 1 + (SELEC

我有一个sql语句,它是一个将两个值插入表(值表示字段)的例程。这些是ints/NVARCHAR

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

编辑:

表是这样的

Postcode  Active ID
NULL       1      14

我假设您正在使用SQL Server,因为您没有另外指定

INSERT INTO Table_1 (col1, col2, col3)
        VALUES  (15, 'info', 1 + (SELECT COUNT(*) FROM Table_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

如果需要值是唯一的,则应使用列。甚至可以将其设置为主键,或者至少在ID列上添加一个唯一的约束。

我可以为您提供帮助,但请编写一个数据示例:T1、T2和T3。这听起来像是一个“滚动您自己的”标识字段,这是一个坏消息IDEA@JNK也许他想存储行数(不一定与max identity值相同)插入时。您所说的“最大行数”是什么意思?您想在插入时将当前行数存储在字段中吗?@davidlive-他的编辑告诉我们这是一个
ID
字段,似乎支持我的猜测