Как создать порядковый номер столбца индекса на таблице с данными - PullRequest
3 голосов
/ 21 октября 2010

У меня есть следующая таблица с 10 уникальными строками, BookingID это FK, содержащий случайное число. Номер не обязательно должен быть в последовательности.

BookingID, Description
1000       Foo
3000       Bar
1500       Zoo

Мне нужно вставить последовательный индекс с именем ID, который начинается с 1..x

как мне это сделать в SQL Server 2005? Я думал написать курсор и x = x + 1, но, может быть, есть лучший способ?

Это результат, который я хочу

Id, BookingID, Description
1   1000       Foo
2   3000       Bar
3   1500       Zoo

Ответы [ 2 ]

7 голосов
/ 21 октября 2010

Это:

SELECT ROW_NUMBER() OVER(ORDER BY t.bookingid) AS id,
       t.bookingid,
       t.description
  FROM YOUR_TABLE t

... будет производить:

id  bookingid   description
----------------------------
1   1000        Foo
2   3000        Bar
3   1500        Zoo

Чтобы обновить существующий столбец id, используйте:

WITH cte AS (
   SELECT t.id,
          ROW_NUMBER() OVER(ORDER BY t.bookingid) AS rank,
          t.bookingid,
          t.description
     FROM YOUR_TABLE t)
UPDATE cte
   SET id = rank
0 голосов
/ 21 октября 2010

ЛУЧШЕ ПОСЛЕ ТОГО, ЧТО ТАБЛИЦА И ДОБАВЬТЕ КОЛОННУ ИДЕНТИЧНОСТИ, КАК

ALTER TABLE TABLENAME ADD SRNO IDENTITY (1,1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...