表用户
|_id, | login |
---------------
| 1 | test |
<<p> 表作用/strong> |_id, | role_name|
------------------
| 1 | Admin |
| 2 | Moderator|
| 3 | User |
表用户_ | 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')))"
问题是角色中只设置了一个Id而不是3个
预期结果:
|user_id|role_id|
-----------------
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
我得到的是:
|user_id|role_id|
-----------------
| 1 | 1 |
使用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
s可能与IN
列表中的不匹配。也许您应该直接运行子查询,看看您得到了什么。