【问题标题】:Insert multiple rows from select result从选择结果中插入多行
【发布时间】:2024-01-21 02:17:01
【问题描述】:

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

SELECT Id FROM role WHERE id != 99 AND Id NOT IN (SELECT RoleId FROM permissionaction WHERE PermissionId = 19);

因此它会产生一些 ID,这些 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?

谢谢

【问题讨论】:

    标签: mysql sql-insert bulkinsert


    【解决方案1】:

    使用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 查询的每个返回行向表permissionaction 添加值。

    【讨论】:

    • 结果很容易。谢谢,效果很好。
    最近更新 更多