テーブルの列を更新して、1 から (レコード数によって決まる最大数) までの値を使用しようとしています。
これを正しく説明しているかどうかわからないので、更新しようとしているデータで SQLFiddle をセットアップします。
バージョン列を1から(最大数)に設定したい。このクエリをバージョン番号のスケールに書き直す方法はありますか? のように、最初のレコードで 1 を使用し、2 番目のレコードで 2 を使用するなど...
UPDATE Documents
SET Version = 1
テーブルの列を更新して、1 から (レコード数によって決まる最大数) までの値を使用しようとしています。
これを正しく説明しているかどうかわからないので、更新しようとしているデータで SQLFiddle をセットアップします。
バージョン列を1から(最大数)に設定したい。このクエリをバージョン番号のスケールに書き直す方法はありますか? のように、最初のレコードで 1 を使用し、2 番目のレコードで 2 を使用するなど...
UPDATE Documents
SET Version = 1
CTE と結合なしでそれを行うことができます。
with RankedDocument as
(
select *
, rn = row_number() over (order by ID)
from Documents
)
update RankedDocument
set Version = rn
私が知る限り、あなたは からのすべてのレコードに 1 ..... N から移動する数値Documents
を持たせたいと考えています。version
一時テーブルとROW_NUMBER
テクニックを使用して増分を取得version
しUPDATE
、元のテーブルに戻すことができます。
CREATE TABLE #Temp (ID int, Version int)
INSERT INTO #Temp (ID, Version)
SELECT ID, ROW_NUMBER() OVER (ORDER BY ID ASC)
FROM Documents
UPDATE Doc
SET Version = TT.Version
FROM Documents AS Doc INNER JOIN #Temp AS TT ON Doc.ID = TT.ID
DROP TABLE #Temp
私があなたを正しく理解していれば..
これを試して:
;WITH list AS (
SELECT
ID
, Version = ROW_NUMBER() OVER( ORDER BY VersionID ASC )
FROM Documents
)
UPDATE d SET
d.Version = x.Version
FROM Documents AS d
INNER JOIN list as x ON d.ID=x.ID
SELECT * FROM Documents
順序 ( ORDER BY VersionID ASC ) を必要な順序に変更できます。