2017-04-05 207 views
0

對於我必須執行的數據庫修復,我需要爲每個ID執行一次插入此查詢結果;從選擇結果中插入多行

SELECT Id FROM role WHERE id != 99 AND Id NOT IN (SELECT RoleId FROM permissionaction WHERE PermissionId = 19); 

因此,它導致一些ID必須與此查詢一起添加。

INSERT INTO permissionaction (AccessLevel, PermissionId, ControllerActionId, Active, CreatedOn, ModifiedOn, CreatedById, ModifiedById, RoleId) VALUES (1, 19, 1, 1, Now(), Now(), 1, 1, *******ID HERE******); 

我知道這可以使用mysql遊標來完成,但在這裏不可能。有沒有辦法在一個查詢中添加所有生成的ID?

感謝

回答

2

使用INSERT...SELECT

INSERT INTO permissionaction (AccessLevel, PermissionId, ControllerActionId, Active, CreatedOn, ModifiedOn, CreatedById, ModifiedById, RoleId) 
SELECT 1, 19, 1, 1, Now(), Now(), 1, 1, Id 
FROM role 
WHERE id != 99 
AND Id NOT IN (SELECT RoleId FROM permissionaction WHERE PermissionId = 19); 

隨着INSERT...SELECT可以值表permissionaction添加對SELECT查詢的每個返回行。

+0

原來很簡單。謝謝你,它完美的作品。 –