SQL Server 根据定义的起始值开始每行计数?

标签 sql sql-server t-sql ssms

我正在尝试根据该列中的最后一个 ID 向该列提供 ID 号。

编辑:我知道有更好的方法。我们无法更改此表以使用正确排序的列,因此我们必须在查询中提供数字。

例如,我可以使用此查询来获取我的最后一个 ID:

SELECT MAX(ID)
FROM TABLE

结果:

16684

如果我在查询中使用 + 1,那么我会得到下一个 ID 的起始编号:

SELECT MAX(ID) + 1
FROM TABLE

结果:

16685

我需要能够将其添加到 INSERT INT0/SELECT 语句中,以便我从结果数字开始并继续提供的每行计数。

例如:

-- I know this doesn't work I do not know what would here.
Select ID (16685), * FROM QUERY RESULTS

结果如下:

16685, Data, Data, Data
16686, Data, Data, Data
16687, Data, Data, Data
16688, Data, Data, Data
16689, Data, Data, Data
...

我不确定如何提供这个值。

有问题的列是 SUDO ID 列,未正确设置为自行递增,因此我们必须自己提供数字。

请注意,每天只会有一次插入,我们并不担心同时发生并发插入。

最佳答案

DECLARE @MaxId INT
SELECT @MaxId = MAX(Id)
FROM MyTable
-- in order by you can set every you want
SELECT @MaxId + ROW_NUMBER() OVER(ORDER BY (SELECT 0)) AS LastId
FROM MyTable
/*
I think it is what you want
*/

关于SQL Server 根据定义的起始值开始每行计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72520347/

相关文章:

mysql - 具有 3 个表和多对多关系的复杂 MySQL 连接

sql-server - 如何从 SQL Server 查询 Open-high-low-close (OHLC) 数据

sql - 在 Select 中合并两个表 (SQL Server 2008)

sql - 跳过导致 PostgreSQL 复制命令错误的行

sql - 我们可以将SQL中的逗号分隔列表作为参数传递吗

sql - 根据不同列值返回行数据

sql - 存储过程超时..删除,然后创建,然后又恢复了?

sql - 读取下一条记录 "NOT"上一条记录sql

sql - 随机页面成本和计划

sql-server - 更改现有约束/规则/程序的 Quoted_Identifier