我有一个格式为
的表格Muser char(27), null
privilege char(15), null
Flags (smallint, null)
MUSER Privilege Flags
1 ALL 0
1 ASSIGNEE 0
1 ALL 0
etc
我希望将值列MUSER增加值1 目前,MUSER中的每条记录的值都为1
更新后,MUSER应该读取
1
2
3
etc
我怎么能这样做,因为我无法理解它 - 如果可能的话,会欣赏tsql。
答案 0 :(得分:0)
这是一种方法,使用CTE和row_number()
函数:
with toupdate (
select t.*,
row_number() over (order by (select NULL)) as seqnum
from t
)
update toupdate
set Muser = cast(seqnum as varchar(255));
您没有指定订购。 order by (select NULL)
选择任意顺序。
而且,为什么要在字符字段中存储整数?你的数据结构似乎有些不妥。
答案 1 :(得分:0)
您也可以尝试这种方式:
<强> Fiddle example here 强>
declare @id char(27)
update mytable set @id = muser = convert(int,isnull(@id,'0')) + 1
--Results
| MUSER | PRIVILEGE | FLAGS |
---------------------------------------------------------
| 1 | ALL | 0 |
| 2 | ASSIGNEE | 0 |
| 3 | ALL | 0 |