4

SQL Server 2008 でテーブルを行 no に変更した後に追加された列の値を設定するにはどうすればよいですか。つまり、列の値を no に等しくしたいのです。行の。また、このフィールドで NULL 値を許可したいと考えています。したがって、自動インクリメントに似ていますが、null 値を許可するため、自動インクリメントで ID または主キー列を使用したくないのです。では、どのように行番号に設定できますか? どんな助けでも大歓迎です。

4

2 に答える 2

12

ROW_NUMBER() を使用して列を直接 UPDATE しようとすると、次のようになります...

ウィンドウ関数は、SELECT または ORDER BY 句でのみ使用できます。

...代わりに、テーブルをそれ自体にINNER JOINします...

UPDATE
    [test123]
SET
    [row_number] = [x].[rn]
FROM
    [test123]
INNER JOIN
    (
        SELECT
            [test_id],
            ROW_NUMBER() OVER (ORDER BY [test_id]) AS rn
        FROM
            [test123]
    ) AS x
ON 
    [test123].[test_id] = [x].[test_id]
于 2012-11-08T11:13:11.920 に答える
1

これはどうですか:目的の列の値を行番号に更新します。

select  'Update myTable set row_No = ' + 
CAST(ROW_NUMBER() over (order by ID) as varchar) + ' Where ID = ' +  
cast(ID as varchar) from myTable

-- 結果は更新ステートメントを生成し、実行すると目的の列の値が行番号に更新されます。

于 2013-01-13T21:14:49.573 に答える