9

SiteNameSiteIdおよびという名前のテーブルがありますSequence。フィールドに行番号を入力したいとSequence思います。次のクエリを試しましたが、レコードが更新されません。

WITH RowNumbers AS 
(
    select   SiteId,
             RowNum = row_number() OVER ( order by SiteId )
    from     [Site] 
)
UPDATE  s
SET     s.[Sequence] = r.RowNum
FROM    [Site] as s INNER JOIN RowNumbers as r ON s.SiteId = r.Row

私は何を間違っていますか?

4

2 に答える 2

16

CTEを直接更新できます...

WITH RowNumbers AS 
(
    select   *,
             RowNum = row_number() OVER ( order by SiteId )
    from     [Site] 
)
UPDATE  RowNumbers
SET     [Sequence] = RowNum

これは、更新可能なビューと同じように機能します。*更新されたフィールドが確実に届くように追加してから、直接更新しました。

于 2012-08-24T13:59:05.433 に答える
3

に参加する必要がr.SiteIDありますr.Row

WITH RowNumbers AS  
( 
    select   SiteId, 
             RowNum = row_number() OVER ( order by SiteId ) 
    from     [Site]  
) 
UPDATE  s 
SET     s.[Sequence] = r.RowNum 
FROM    [Site] as s INNER JOIN RowNumbers as r ON s.SiteId = r.SiteID
于 2012-08-24T13:58:32.890 に答える