表用户
|_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 |
答案 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
列表中的内容不匹配。也许你应该只运行子查询,看看你得到了什么。