sql - 使用表值构造函数作为派生表插入超过 1000 行
问题描述
我有以下 T-SQL 查询,它将值列表插入到临时表中。我的问题是 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 文档,可以使用表值构造函数作为派生表来绕过此限制。
来自 Microsoft 的示例:插入超过 1,000 行
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);
推荐阅读
- python - 关于在 Python 中将文件读入列表的问题
- python - URL 中有两个变量的 Beautiful Soup 脚本
- android - 在 Kotlin 中使用“when”匹配不同的值
- swift - AppCode 无法构建任何 Swift 应用程序
- c++ - Arduino/MySQL 连接器无法使用带有 ENC28J60 的 UIPEthernet 进行连接
- mysql - 如何像在 Excel 中一样在 MySQL 中“填充系列”(线性步长值)?
- excel - 将行中的所有活动值合并到单列中
- javascript - 在 Javascript 中使用 for 循环访问多维数组中的单个元素
- mysql - MYSQL:获取字段中每个单词的首字母
- python - 摆脱额外的空白行还有哪些其他选择?