从 select 结果中插入多行

Insert multiple rows from select result

对于我必须执行的数据库修复,我需要为每个 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?

谢谢

使用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,您可以为 SELECT 查询的每个返回行向 table permissionaction 添加值。