使用 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);
我有以下 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);