如何从特定记录保持增量序列 sql
How do I keep incremental sequence going on sql from a specific record
我正在尝试找出 SQL 可以从一个点更新序列的语句。如您所见,它在 15 停止并从 19 开始,而实际上 19 应该是 16,20 应该是 17,依此类推。
SQL 服务器版本 11.0.5058
您可以在查询时轻松重新编号:
select t.*, row_number() over (order by col3)
from table t;
如果你想更新号码,你可以这样做:
with toupdate as (
select t.*, row_number() over (order by col3) as newcol3
from table t
)
update toupdate
set col3 = newcol3;
但是,如果该列是 table 的 ID,则不要更改该值。不连续的 ID 很好,没有理由更改值。而且,如果这些值用于外键引用,更改值可能会破坏数据库或花费很长时间。
我正在尝试找出 SQL 可以从一个点更新序列的语句。如您所见,它在 15 停止并从 19 开始,而实际上 19 应该是 16,20 应该是 17,依此类推。
SQL 服务器版本 11.0.5058
您可以在查询时轻松重新编号:
select t.*, row_number() over (order by col3)
from table t;
如果你想更新号码,你可以这样做:
with toupdate as (
select t.*, row_number() over (order by col3) as newcol3
from table t
)
update toupdate
set col3 = newcol3;
但是,如果该列是 table 的 ID,则不要更改该值。不连续的 ID 很好,没有理由更改值。而且,如果这些值用于外键引用,更改值可能会破坏数据库或花费很长时间。