使用 table 值构造函数作为派生的 table 插入超过 1000 行

Inserting more than 1000 rows using the table value constructor as a derived table

我有以下 T-SQL 查询,它将值列表插入临时 table。我的问题是 INSERT 函数限制为 1,000 行,而我有一个 4,000 行的列表。

这里是查询的摘录:

USE MyDatabase

create table #t1 
( 

ResaID numeric (20) NOT NULL,
CtyRes varchar (20) NOT NULL

); 

INSERT INTO #t1 VALUES

('304475','GB'),
('304482','GB'),
('304857','GB'),
('314643','GB'),
('321711','GB'),
('321714','GB'),
...

...列表一直持续到第 4,000 行

根据 Microsoft 文档,可以使用 table 值构造函数作为派生的 table 绕过此限制。

Microsoft 示例:Inserting more than 1,000 rows

CREATE TABLE dbo.Test ([Value] int);  

INSERT INTO dbo.Test ([Value])  
  SELECT drvd.[NewVal]
  FROM   (VALUES (0), (1), (2), (3), ..., (5000)) drvd([NewVal]);

如何修改我现有的 SQL 查询以使其适应此示例?

您可以使用以下方法扩展 MS 示例以处理多列:

INSERT INTO #t1(ResaID, CtyRes) 
SELECT ResaId, CtyRes
FROM (VALUES 
('304475','GB'),
('304482','GB'),
('304857','GB'),
('314643','GB')) AS sub( ResaId, CtyRes);

db<>fiddle demo