4

この質問を読んだ後、別の同様の質問があります。この SQL ステートメントを機能させる簡単な方法はありますか?

update [Insurances] set [RowNo]=ROW_NUMBER() over (order by [RowNo])

RowNoレコードが削除されるたびに更新したい列があります。

4

3 に答える 3

9
UPDATE t1 
SET t1.RowNo = s.RowNo  
FROM  [Insurances] t1
INNER JOIN
(
     SELECT Id, ROW_NUMBER() OVER( ORDER BY Somefield DESC) RowNo
     FROM Insurances
) s ON t1.Id = s.Id
于 2012-09-12T14:40:52.343 に答える
2

テーブルをサブクエリに結合するか(SQL Serverで実行できるかどうかはわかりません)、ビューを作成して、更新プログラムでテーブルを結合します。

CREATE VIEW InsurancesView AS
SELECT insuranceID, ROW_NUMBER() OVER ( ORDER BY RowNo ) AS newRowNo
  FROM Insurances;

(という名前の主キーがあると仮定しますinsuranceID

UPDATE Insurances AS i
 INNER JOIN InsurancesView AS iv
    ON i.insuranceID = iv.insuranceID
   SET i.RowNo = iv.newRowNo;

お役に立てれば。

于 2012-09-12T14:39:54.300 に答える
2
WITH cte AS
(
SELECT Id, ROW_NUMBER() OVER(ORDER BY Name ) RowNo FROM lu_Domain
)
UPDATE dbo.lu_Domain
SET SortOrder = cte.RowNo
FROM dbo.lu_Domain d
INNER JOIN cte ON cte.id = d.Id
于 2015-03-10T14:39:03.167 に答える