0

我有一个格式为的表格

Muser  char(27), null
privilege char(15), null
Flags (smallint, null)

MUSER Privilege Flags
1     ALL       0
1     ASSIGNEE  0
1     ALL       0
etc

我想将 char 列 MUSER 增加 1 目前 MUSER 中的每条记录的值为 1

更新增量后 MUSER 应读取

1
2
3
etc

我将如何做到这一点,因为我无法理解它 - 如果可能的话,我会很感激 tsql。

4

2 回答 2

0

您也可以尝试这种方式:

小提琴示例在这里

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 |
于 2013-05-29T09:37:16.117 回答
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)任意顺序。

而且,为什么要将整数存储在字符字段中?您的数据结构似乎有问题。

于 2013-05-28T15:51:21.470 回答