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()関数を使用する 1 つの方法を次に示します。

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 に答える