2012-10-19 141 views
3

我有一個現有的文檔表和一個新的權限表。我想創建一個腳本,它將給予所有現有文檔的所有權限。 documents_permissions表將需要document_id和permission_id(1,2,3)。因此,對於每個文檔,我需要插入3行。這是我在atm的地方:SQL插入子選擇和多行

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

但我需要重複每個權限。做這個的最好方式是什麼?

回答

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 
+0

感謝。所以如果我想添加更多的權限,我會更新它有'選擇3聯合所有選擇4聯合所有'? – xylar

+0

@xylar:的確如此 –

+0

你不需要使用UNION ALL,除非你有像1,1,2,3,4,4等重複值。如果你沒有重複,UNION關鍵字就夠了 – PyQL

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