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

标签 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

最佳答案

是的,但是您需要小心操作。在这种情况下,您似乎想要一个交叉连接:

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);

关于sql - 使用 select 语句中的值将多行插入到某个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456300/

相关文章:

sql - 根据组顺序选择新列

php - 设置 MYSQL 远程连接并使用 PHP 从 Linux 主机连接

mysql - 修复多列唯一约束 E 上的 "maximum key length...."警告的最佳方法

mysql - 使用 MYSQL QUERY 和 GROUP BY 获取总计和小计

MySQL Workbench SQL 脚本编辑器面板

sql - 从合并的连接结果集中消除 NULL 字段

mysql - 使用 pivot 命令时出现动态 SQL 错误

sql - 日期时间转换或转换?

sql-server - Insert Update触发器如何判断是插入还是更新

sql-server - 创建存储过程时出现问题