首页 > 解决方案 > 使用 SQL INSERT 从两个列表中插入多条记录

问题描述

我有一个员工编号列表和一个日期列表。我想为每个员工编号和日期在表中插入一行。

我可以使用:

BEGIN TRAN
SET XACT_ABORT ON

INSERT INTO TABLE1 (EMPNUM, DATE)
VALUES (1, '2020-04-06')
       (1, '2020-04-07')
       etc.

但这需要手动创建大量记录。

有没有更简单的方法来实现我的目标?

标签: sql-server

解决方案


您可以使用cross joinwith 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);

推荐阅读