2017-04-05 151 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

原来很简单。谢谢你,它完美的作品。 –