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

时间:2012-10-19 09:33:47

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

但是我需要为每个权限重复一次。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:4)

试试这个:

使用 CROSS JOIN

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

答案 1 :(得分:1)

INSERT INTO `documents_permissions` (`document_id`, `permission_id`)
select id, pid from `documents`
cross join (select 1 as pid union select 2 union select 3)X