Как вставить последовательные числа в первичный ключ, используя подзапрос select? - PullRequest
1 голос
/ 25 марта 2009

Я читаю таблицу A и вставляю дату в таблицу B (обе таблицы имеют одинаковую структуру, за исключением типа данных первичного ключа). В таблице B первичным ключом является int, тогда как в таблице A это UniqueIdentifier.

INSERT INTO TableB (ID, имена, адрес) (выберите ID, имена, адрес из таблицы A)

Теперь, как я могу вставить в TableB инкрементное значение типа int (1,2,3 и т. Д.) Вместо uniqueidentifier из TableA, используя приведенный выше скрипт.

Помощь

Ответы [ 4 ]

6 голосов
/ 25 марта 2009

Почему бы не изменить Таблицу B, чтобы первичный ключ представлял собой идентификатор, который автоматически увеличивается?

2 голосов
/ 25 марта 2009

Если изменение схемы вашего TableB не вариант, то добавьте ранг к вашему оператору выбора, например так:

insert into tableB select rank() over(order by id), name, address from tableA

Это всегда начинается с 1. Если бы вы хотели начать нумерацию с номера, отличного от 1., вы могли бы добавить + 10. Я уверен, что вы поняли оттуда.

2 голосов
/ 25 марта 2009

Перейдите к свойствам таблицы, выберите поле идентификатора, в разделе «Спецификация идентификации» установите «Увеличение приращения» = 1, «Семя идентификации» = 1. При этом идентификатор становится автоматически инкрементным ...

Тогда ваш оператор вставки будет выглядеть примерно так:

INSERT INTO TableB (Names, Address) (select Names, Address from TableA)

0 голосов
/ 25 марта 2009
CREATE TABLE TableB
(
  ID int PRIMARY KEY IDENTITY(1,1),
  Name nvarchar(200),
  Address nvarchar(200)
)

Тогда в запросе не указывайте значение столбца идентификаторов.

INSERT INTO TableB(Name, Address)
SELECT Name, Address FROM TableA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...