Sql server 如何在SQL Server中选择列值的最大值和相应的增量?
我有一个名为Sql server 如何在SQL Server中选择列值的最大值和相应的增量?,sql-server,sql-server-2014,Sql Server,Sql Server 2014,我有一个名为Employee的表,其中Id(Id自动递增)如下所示: id ---- 10 11 12 13 1000 1001 1002 我的要求是:无论何时将任何数据从不同的来源插入Employee表中,我只想增加2位ID值 像这里一样,如果插入了数据,那么它应该检查MAX(2位ID)并将其递增为14,然后插入数据。它不应增加为1003 如果我不清楚,请告诉我。我不知道为什么需要这个,但您可以使用DBCC CHECKIDENT重新设定递增值的种子
Employee
的表,其中Id(Id
自动递增)如下所示:
id
----
10
11
12
13
1000
1001
1002
我的要求是:无论何时将任何数据从不同的来源插入Employee
表中,我只想增加2位ID值
像这里一样,如果插入了数据,那么它应该检查MAX(2位ID)并将其递增为14,然后插入数据。它不应增加为1003
如果我不清楚,请告诉我。我不知道为什么需要这个,但您可以使用
DBCC CHECKIDENT
重新设定递增值的种子:
create table test(id int identity(1, 1), col int)
insert into test values(1),(2)
set identity_insert test on
insert into test(id, col) values(1001, 1001),(1002, 1002)
set identity_insert test off
select * from test
dbcc checkident(test, RESEED, 2)
insert into test values(3)--inserts 3, 3
select * from test
我正在寻找这样的sql查询:从ID<1000的Employee中选择MAX(ID)。只是为了让你们都明白。然后增加IDFirst想到的增量:为什么不修复这3条记录(假设只有3条记录>1000)并分别设置它们的ID 14、15、16,然后重新设置表的种子,以在17开始ID?基本上,修复您的数据,而不是实施一些疯狂的解决方案,这些解决方案只适用于接下来的987条记录。这是一种糟糕的做法,最终会咬到您的屁股。我已经见过很多次了——我不知道为什么,但似乎像这样的漏洞困扰了很多电脑迷。就让它去吧。我保证,在管理该ID字段方面,您永远不会比SQL Server做得更好。我还向你保证你永远不会用完整数-我刚刚参观了整数工厂,他们向我保证他们会继续生产更多的整数。@sage Its juszz我提到过一个例子。。在真实场景中。。有数百条记录啊,这是个坏主意,我假设这个id在其他表中用作外键。如果您不小心使用了以前使用过的id,则可能会使所有其他表失去同步。