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