同时插入状态和选定的值

时间:2015-09-17 14:56:49

标签: mysql sql sqlite

表用户

|_id, | login |
---------------
|  1  |  test |

表格角色

|_id, | role_name|
------------------
|  1  |  Admin   |
|  2  | Moderator|
|  3  |  User    |

表User_Login

| user_id | role_id |

我想为具有ID 1角色的用户设置在查询中按名称搜索,这是我到目前为止所得到的:

"INSERT INTO user_role
        + "(userId, roleId) VALUES (1, (SELECT r._id FROM roles r WHERE r.role_name IN ('Admin', 'Moderator', 'User')))"

东西只是从角色而不是3

设置了一个Id

预期结果:

|user_id|role_id|
-----------------
|   1   |   1   |
|   1   |   2   |
|   1   |   3   |

我得到了什么:

|user_id|role_id|
-----------------
|   1   |   1   |

1 个答案:

答案 0 :(得分:2)

使用match_all解决您的问题吗?

insert . . . select

INSERT INTO user_role(userId, roleId) SELECT 1, r._id FROM roles r WHERE r.role_name IN ('Admin', 'Moderator', 'User'); 可能与role_name列表中的内容不匹配。也许你应该只运行子查询,看看你得到了什么。