2012-10-19 5 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이

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

덕분에 가입하세요. 그래서 더 많은 권한을 추가하고 싶다면'select 3 union all select all 4 union all'을 사용하도록 업데이트하겠습니까? – xylar

+0

@xylar : 정확히 –

+0

1,1,2,3,4,4 등과 같이 값이 중복되지 않으면 UNION ALL을 사용할 필요가 없습니다. 중복이 없으면 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 
관련 문제