对列值进行排序以匹配另一个 table 列中值的顺序

Sort column values to match order of values in another table column

假设我 table 是这样的:

Column1            Column2
C                     2
B                     1
A                     3

我需要交换第二列中的值才能得到这个:

Column1            Column2
C                     3
B                     2
A                     1

目标只是让数字列的值按照另一列的字母顺序排序。实际的 table 有多个列,第 1 列是人名,而第 2 列二是用于呈现 UI.

中第 1 列值的排名

执行此操作的最佳方法是什么? 我在 SQL 服务器上从 C# 代码执行此操作,并且由于事务的原因必须使用 System.Data.SqlClient.SqlCommand。但如果这一切都可以从 SQL.

完成,也许并不重要

谢谢!

所以你需要根据Column1用行号更新Column2

您可以使用 ROW_NUMBER and a CTE:

WITH CTE AS 
(
    SELECT Column1, Column2, RN = ROW_NUMBER() OVER (ORDER BY Column1)
    FROM MyTable
)
UPDATE CTE SET Column2 = RN;

这会更新 table MyTable 并起作用,因为 CTE 选择单个 table。如果它包含多个 table,则必须 JOIN UPDATECTE

Demo