使用select语句中的值将多行插入到某个表中

Edu*_*huk 1 sql sql-server

可以使用select语句中的值在一个表中插入多行吗?
一个例子:

INSERT INTO SomeTable (UserID, ModuleID, ModuleRights) VALUES 
      (u.UserId, 1, 15),
      (u.UserId, 2, 1),
      (u.UserId, 4, 3),
      (u.UserId, 8, 7)
SELECT * FROM Users u
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

是的,但你需要小心如何做到这一点.在这种情况下,你似乎想要一个cross join:

INSERT INTO SomeTable (UserID, ModuleID, ModuleRights)
    SELECT u.UserId, v.ModuleID, v.ModuleRights
    FROM Users u CROSS JOIN
         (VALUES (1, 15), 
                 (2, 1), 
                 (4, 3), 
                 (8, 7)
         ) v(ModuleID, ModuleRights);
Run Code Online (Sandbox Code Playgroud)