2012-08-24 3 views

Antwort

15

können Sie den CTE direkt ...

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

Dies funktioniert auf die gleiche Weise wie eine aktualisierbare Ansicht aktualisieren beizutreten. Ich fügte * hinzu, um sicherzustellen, dass das aktualisierte Feld durchkommt, und aktualisierte es dann direkt.

+2

+1 Dies ist eigentlich die Art, es zu tun –

+0

Wow ... funktioniert wie ein Charme. Ist viel besser lesbar. Wusste das nicht. –

+0

perfekt, genau das, was ich gesucht habe! –

3

Sie sollten r.SiteID, nicht 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