将行插入到 table 中,带有不自动递增的递增列
Insert rows into a table with a increment column without auto increment
我有一个 table Person
结构如下:
[ID] int PRIMARY KEY
[Name] nvarchar(100)
[Address] nvarchar(1000)
我无法在 ID
列上使用自动递增。
我必须将 10 行(存在于 @Persons
table 变量中)插入 Person
table 并且我知道当前的最大值 ID
是 125.
如何在不使用循环或游标的情况下将这 10 行插入 Person
table?
获取最大值并将其添加到 select 期间的 ROW_NUMBER() 列。
(
ID int primary key
, name nvarchar(100)
, Address nvarchar(1000)
);
INSERT INTO Person
VALUES
(122, 'John Doe', 'Some Address 123')
, (123, 'Homer Simpson', 'Some Address 456')
, (124, 'Jane Doe', 'Some Address 789')
, (125, 'Bo Katan', 'Some Address 101112');
DECLARE @Persons TABLE
(
ID int primary key
, name nvarchar(100)
, Address nvarchar(1000)
);
INSERT INTO @Persons
VALUES
(2, 'Quinn Amaro','New Address a')
, (3, 'Elenor Barreras','New Address B')
, (4, 'Mckinley Dart','New Address c')
, (5, 'Ronnie Tank','New Address D')
, (6, 'Woodrow Creek','New Address e')
, (7, 'Brittany Patlan','New Address F')
, (8, 'Len Venzon','New Address g')
, (9, 'Ila Goodlow','New Address H')
, (10, 'Velma Tallarico','New Address i')
, (11, 'Blossom Hanney','New Address J');
INSERT INTO Person (ID, name, Address)
SELECT
ID = ROW_NUMBER() OVER(ORDER BY ID) + (SELECT MAX(ID) FROM Person)
, name
, Address
FROM @Persons;
SELECT *
FROM Person;
我有一个 table Person
结构如下:
[ID] int PRIMARY KEY
[Name] nvarchar(100)
[Address] nvarchar(1000)
我无法在 ID
列上使用自动递增。
我必须将 10 行(存在于 @Persons
table 变量中)插入 Person
table 并且我知道当前的最大值 ID
是 125.
如何在不使用循环或游标的情况下将这 10 行插入 Person
table?
获取最大值并将其添加到 select 期间的 ROW_NUMBER() 列。
(
ID int primary key
, name nvarchar(100)
, Address nvarchar(1000)
);
INSERT INTO Person
VALUES
(122, 'John Doe', 'Some Address 123')
, (123, 'Homer Simpson', 'Some Address 456')
, (124, 'Jane Doe', 'Some Address 789')
, (125, 'Bo Katan', 'Some Address 101112');
DECLARE @Persons TABLE
(
ID int primary key
, name nvarchar(100)
, Address nvarchar(1000)
);
INSERT INTO @Persons
VALUES
(2, 'Quinn Amaro','New Address a')
, (3, 'Elenor Barreras','New Address B')
, (4, 'Mckinley Dart','New Address c')
, (5, 'Ronnie Tank','New Address D')
, (6, 'Woodrow Creek','New Address e')
, (7, 'Brittany Patlan','New Address F')
, (8, 'Len Venzon','New Address g')
, (9, 'Ila Goodlow','New Address H')
, (10, 'Velma Tallarico','New Address i')
, (11, 'Blossom Hanney','New Address J');
INSERT INTO Person (ID, name, Address)
SELECT
ID = ROW_NUMBER() OVER(ORDER BY ID) + (SELECT MAX(ID) FROM Person)
, name
, Address
FROM @Persons;
SELECT *
FROM Person;