在SQL Server中重新排序一组数据

Coo*_*der 3 sql t-sql sql-server common-table-expression

我有一个像这样的值表:

CREATE TABLE 
(
    Name1 VARCHAR (50),
    Name2 VARCHAR (50),
    Sequence INT
)
Run Code Online (Sandbox Code Playgroud)

在这张表中,我有这样的行

'Bob', 'Jones', 1
'James','Ant', 2
Run Code Online (Sandbox Code Playgroud)

我想要根据Name2列的顺序更新UPDATE(UPDATE SET)序列的最佳方法,因此当重新排序时,值为:

'James','Ant', 1
'Bob', 'Jones', 2
Run Code Online (Sandbox Code Playgroud)

我很确定这可以通过CTE的ROW_NUMBER OVER()样式完成,但不确定确切的语法.

Rem*_*anu 6

您可以更新CTE:

WITH OrderedT AS
(
  SELECT Sequence, 
  ROW_NUMBER() OVER (ORDER BY Name2, Name1) as rn
  FROM T
)
UPDATE OrderedT
SET Sequence = rn;
Run Code Online (Sandbox Code Playgroud)