我在 SQLserver 中工作。我有几行完全相同的数据,如下所示:
hm dep num
517 577578 308330148120004
517 577578 308330148120004
517 577578 308330148120004
517 577578 308330148120004
我想用数据的行号更新“hm”部分,如下所示:
hm dep num
1 577578 308330148120004
2 577578 308330148120004
3 577578 308330148120004
4 577578 308330148120004
我该怎么做?谢谢!
最佳答案
您可以将可更新的 Common Table Expression (CTE) 与 ROW_NUMBER() 函数一起使用:
WITH CTE AS
( SELECT hm,
dep,
num,
RowNumber = ROW_NUMBER() OVER(PARTITION BY dep, num ORDER BY hm)
FROM T
)
UPDATE CTE
SET hm = RowNumber;
Example on SQL Fiddle
这基本上以任何顺序排列相同的行,然后在分配该顺序后将列
hm
设置为行号。关于sql - 如何在 SQL 中更新相同的数据行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21015921/