从选择结果中插入多行

Jes*_*sse 2 mysql bulkinsert sql-insert

对于我必须执行的数据库修复,我需要为此查询结果的每个ID执行插入操作;

SELECT Id FROM role WHERE id != 99 AND Id NOT IN (SELECT RoleId FROM permissionaction WHERE PermissionId = 19);
Run Code Online (Sandbox Code Playgroud)

因此,它会产生一些必须与此查询一起添加的 ID。

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

我知道可以使用 mysql 游标来完成,但这里不可能。有没有一种方法可以在一个查询中添加所有生成的 ID?

谢谢

dii*_*___ 5

使用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);
Run Code Online (Sandbox Code Playgroud)

您可以为查询返回的每个行INSERT...SELECT添加值到表中。permissionactionSELECT