对于我必须执行的数据库修复,我需要为每个 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?
由于
答案 0 :(得分:2)
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
添加值。