sql-server - 使用 SQL INSERT 从两个列表中插入多条记录
问题描述
我有一个员工编号列表和一个日期列表。我想为每个员工编号和日期在表中插入一行。
- EMPNUM (1, 2, 3 ,4, 5)
- 日期('2020-04-06'、'2020-04-07'、'2020-04-08'、'2020-04-09'、'2020-04-10')
我可以使用:
BEGIN TRAN
SET XACT_ABORT ON
INSERT INTO TABLE1 (EMPNUM, DATE)
VALUES (1, '2020-04-06')
(1, '2020-04-07')
etc.
但这需要手动创建大量记录。
有没有更简单的方法来实现我的目标?
解决方案
您可以使用cross join
with values 构造:
insert into table1 (empnum, date)
select e.empnum, d.dates
from (values(1), (2), (3), (4), (5)
) e(empnum) cross join
(values ('2020-04-06'), ('2020-04-07'), ('2020-04-08'), ('2020-04-09')
) d(dates);
推荐阅读
- azure - 将 parquet 文件数据从 Azure 数据湖读取到存储在 SharePoint Online 中的 Excel
- javascript - React-select:选定的选项不粘
- r - 根据列中的信号填充值
- c# - Activity Function 被调用后,Durable Functions 会发生什么?
- sqlite - SQLite INSERT OR IGNORE 不会忽略重复项
- python - 如何从字符串列表中创建一个 DataFrame,每个字符串具有不同数量的属性
- javascript - 如何在描述块中并行或一个接一个地运行 webdriverio it 语句?
- excel - 循环 vba 代码,使其在工作簿中工作多个工作表
- python - 根据列索引添加行
- python - 如何在二维列表中查找与特定模式匹配的元素