mysql - 带有子选择和多行的 SQL 插入

标签 mysql insert subquery

我有一个现有的文档表和一个新的权限表。我想创建一个脚本,该脚本将授予对所有现有文档的所有权限。 documents_permissions 表将需要 document_id 和 permission_id (1,2,3)。因此,对于每个文档,我需要插入 3 行。这是我在 atm 的地方:

INSERT INTO `documents_permissions` (`document_id`, `permission_id`)
SELECT `id`, '1' FROM `documents`

但我需要为每个权限重复一遍。执行此操作的最佳方法是什么?

最佳答案

试试这个:

使用交叉连接

INSERT INTO `documents_permissions` (`document_id`, `permission_id`)
select  `id`,a.permissions
 from(
select 1 as permissions union all
select 2 union all
select 3 )a
cross join
`documents` d

关于mysql - 带有子选择和多行的 SQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12971346/

相关文章:

mysql - 如何从mysql中的另一个表中获取匹配的多行/列

multidimensional-array - 创建 Lua 高级表

mysql - Filemaker Pro 10 : How to get the unique ID of last insert on mySQL tables (ODBC)

php - MySQL - 按荣誉排序并将其与来自不同表的用户名一起写入 "for"

php - 未定义的属性:stdClass::$title

php - #1054 - 'domain.com' 中的未知列 'field list'

mysql - 延迟评估 MySQL View

mysql - JOIN MySQL 的表结果中未包含 SUM 信息的子查询

mysql - Rails 无法在没有互联网的情况下连接本地数据库

mysql - 选择开始年份和开始月份到结束年份和结束月份之间的行?