2016-05-19 3 views
0

にゼロの場合は:今、私はダミーの値OPを更新したい自動移入列フィールド値が、私はこのサンプルデータを持つテーブル<code>test</code>を持っているSQL Serverの

id name user_id 
------------------- 
1  sd  0 
3  ds  0 
4  ss  0 

... etc 

user_id列には、90000000001(12で始まりますユーザーIDがゼロの場合は数字が表示されます)これを達成するにはどうすればよいですか?

私はこれを見たことがありません。

答えて

0

あなたがこれを行うには、変数を使用することができます。

DECLARE @user_id bigint 
SET @user_id = 90000000000 
UPDATE test 
SET @user_id= user_id = @user_id + 1 
0

私はあなたがこのために探していると思う:

Create Table Test (ID Int, Name Varchar(8000), User_Id BigInt) 
Insert Test Values (1, 'Joe', 1) 
Insert Test Values (2, 'John', 800) 
Insert Test Values (3, 'Jerry', 0) 
Insert Test Values (4, 'Jane', 100) 
Insert Test Values (5, 'Jim', 0) 
Insert Test Values (6, 'Jamie', 8997) 

Update T Set T.User_ID = Q.Dummy 
    From Test T 
    Join (Select ID, Row_Number() Over (Order By ID) + 9000000000 Dummy From Test Where User_Id = 0) Q On Q.ID = T.ID 

Select * From Test 
0

は私が正しくあなたの質問を理解すると仮定すると、その後、次はあなたが欲しいものを行う必要があります。

UPDATE test 
    SET  [user_id] = CAST(NewIDs.new_user_id AS BIGINT) 
    FROM test 
    INNER JOIN (
        SELECT [id] 
          ,[name] 
          ,'9' + RIGHT('0000000000'+ CAST(ROW_NUMBER() OVER (ORDER BY [id]) AS VARCHAR(11)),11) AS [new_user_id] 
        FROM test ZeroID 
        WHERE [user_id] = 0 
       ) NewIDs ON NewIDs.id = test.id 
関連する問題