2015-03-12 3 views
0

Скажем, у меня есть следующая таблица:Вставка последовательных чисел в таблицу

id  name  age 
     John  23 
     Mary  22 
     Mike  25 
     etc  etc 

Я хотел бы, чтобы генерировать порядковый номер в id колонке для каждой записи. Может ли кто-нибудь мне помочь?

Извините, если я задал тот же вопрос, что и раньше.

+1

Таким образом, столбец идентификатора –

+0

Он работал с первым ответом. Но у меня есть еще один вопрос: могу ли я использовать предложение, чтобы начать с конкретного ответа? –

ответ

1

Вы можете использовать ROW_NUMBER() добавить порядковый номер:

SELECT 
    id = ROW_NUMBER() OVER(ORDER BY (SELECT NULL)), 
    name, 
    age 
FROM yourTable 
0

Alter таблицу затем добавить личность, и он будет генерировать значение

ALTER TABLE dbo.YourTable 
    Add id Int Identity(1, 1) 
+0

Что вы говорите? – KumarHarsh

+0

Первичный ключ НЕ генерирует значение. возможно, вы имеете в виду личность. –

+0

Я хотел бы обновить таблицу с последовательным номером. В этом случае, что такое код для обновления идентификатора столбца с последовательным номером? –

1

Вот пример того, как обновить таблицу через CTE :

DECLARE @t TABLE (ID INT, Name NVARCHAR(50)) 

INSERT INTO @t 
VALUES (3, 'a'), 
     (5, 'b'), 
     (10, 'c') 


SELECT * FROM @t; 

WITH cte 
      AS (SELECT ID , 
         ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS RN 
       FROM  @t 
      ) 
    UPDATE cte 
    SET  ID = RN 

SELECT * FROM @t 

Выход:

ID Name 
3 a 
5 b 
10 c 

ID Name 
1 a 
2 b 
3 c 

Вместо

ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS RN 

вы можете сделать

ROW_NUMBER() OVER (ORDER BY Name) AS RN 

для того, чтобы увеличить значения при заказе в Name колонке.

Смежные вопросы