SQL Server行编号
我想用数字1,2,3,4更新SQL Server行编号,sql,sql-server,Sql,Sql Server,我想用数字1,2,3,4更新SrNo列,而不改变其他列的顺序 只有在存在可以提供排序的列的情况下,才有必要使用行号。假设排序由TextCol列指定,那么我们可以尝试以下操作: SrNo TextCol -------------- NULL ABC NULL ABC NULL ASC NULL qwe 表是无序的,所以不能依赖“现有序列”。然而,一个“技巧”是使用selectnull,这实际上对行顺序没有任何影响。虽然它有效,但你不应该依赖它作为一个永久的解决方案 WITH
SrNo
列,而不改变其他列的顺序 只有在存在可以提供排序的列的情况下,才有必要使用行号。假设排序由TextCol
列指定,那么我们可以尝试以下操作:
SrNo TextCol
--------------
NULL ABC
NULL ABC
NULL ASC
NULL qwe
表是无序的,所以不能依赖“现有序列”。然而,一个“技巧”是使用
selectnull
,这实际上对行顺序没有任何影响。虽然它有效,但你不应该依赖它作为一个永久的解决方案
WITH cte AS (
SELECT SrNo, TextCol, ROW_NUMBER() OVER (ORDER BY TextCol) rn
FROM yourTable
)
UPDATE cte
SET SrNo = rn;
您是否可以与其他textcol(如
cza、cbc
)共享示例输出……实际上,没有什么可更改或保留的。Sql表是一组无序的行。对行进行排序的唯一方法是在查询中指定显式order BY。您使用的sql server版本是什么?表上有聚集索引吗?如果您使用的是sql server 2012或更高版本,则可以使用序列将这些值插入到表中。
WITH cte AS (
SELECT SrNo, TextCol
, ROW_NUMBER() OVER (ORDER BY (select NULL)) rn
FROM yourTable
)
UPDATE cte
SET SrNo = rn;