【发布时间】:2013-10-28 15:30:38
【问题描述】:
我正在尝试构建一个 SQL 查询,该查询将采用一组行并对所有行上的一个字段重新编号,从它们都与会话 ID 匹配的位置开始。
例如 更改前:
SessionID | LineNumber | LineContents
----------------------------------------------
74666 | 1 | example content
74666 | 2 | some other content
74666 | 3 | another line
74666 | 4 | final line
更改后(用户已删除第 2 行,因此“LineNumber”值已更新以反映新编号(即“第 3 行”现在已变为“第 2 行”等):
SessionID | LineNumber | LineContents
----------------------------------------------
74666 | 1 | example content
74666 | 2 | another line
74666 | 3 | final line
所以用非正确的语法来反映这一点应该是这样的
i = 0;
UPDATE tbl_name
SET LineNumber = i++;
WHERE SessionID = 74666;
在没有运气的情况下搜索了很多,任何帮助都很棒:)
【问题讨论】:
-
您使用的是哪个版本的 SQL Server?
-
什么决定了您的订单?您有 ID 字段或日期字段吗?
-
我猜你的意思是 i-- 对于 LineNumber 大于已删除记录 LineNumber 的每一行。
-
这是你的桌子还是你有什么primaryKey或类似的东西?
-
回复 Gareth D - 是的,我遗漏了一个唯一的 LineNumberID 字段 回复 jpw - SQL server 2012 回复 Suraj - 是的,我遗漏了一个唯一的 LineNumberID 字段
标签: sql sql-server tsql sql-server-2012