我们说我有这样的表:
Column1 Column2
C 2
B 1
A 3
我需要在第二列中交换值才能得到这个:
Column1 Column2
C 3
B 2
A 1
目标仅限于数字列的值按其他字母顺序排列。实际表格有多列,第1列是人物的名称,第2列第2列是在UI中呈现第1列值的等级。
最佳方法是什么? 我是从SQL服务器上的C#代码执行此操作,并且由于事务而必须使用System.Data.SqlClient.SqlCommand。但是,如果这一切都可以通过SQL完成,那么它可能并不重要。
谢谢!
答案 0 :(得分:3)
因此,您需要根据Column2
使用行号更新Column1
吗?
您可以使用ROW_NUMBER
和CTE:
WITH CTE AS
(
SELECT Column1, Column2, RN = ROW_NUMBER() OVER (ORDER BY Column1)
FROM MyTable
)
UPDATE CTE SET Column2 = RN;
这会更新表MyTable
并且因为CTE选择单个表而起作用。如果它包含多个表格,您必须JOIN
UPDATE
和CTE
。