如何构建一个命令来连接mySQL中的3个不同的表?
16lz
2021-01-22
I have three different tables in MySQL:
我在MySQL中有三个不同的表:
given an user id, how can i get a list of role's name of this user? For example, user_id = 1 I need a list like this (1, deleteuser, modifyuser, viewuser)
给定用户ID,我如何获得该用户的角色名称列表?例如,user_id = 1我需要一个这样的列表(1,deleteuser,modifyuser,viewuser)
How can I construct my SQL command to get such a list?
如何构造我的SQL命令来获取这样的列表?
3 个解决方案
#1
2
JOIN
the three tables like so:
像这样加入三个表:
SELECT
u.id,
r.Name
FROM user u
INNER JOIN user_role ur ON u.id = ur.user_id
INNER JOIN roles r ON ur.Role_id = r.id
WHERE u.id = Someid
However, if you want the list of roles for each user to be concatenated into one string. Use GROUP_CONCAT
like so:
但是,如果您希望将每个用户的角色列表连接成一个字符串。像这样使用GROUP_CONCAT:
SELECT
u.id,
GROUP_CONCAT(r.Name) roles
FROM user u
INNER JOIN user_role ur ON u.id = ur.user_id
INNER JOIN role r ON ur.Role_id = r.id
WHERE u.id = 1
GROUP BY u.id
SQL Fiddle Demo
更多相关文章
- mysql 排序两个字段/列表先根据时间升序排序,时间相同再根据商家I
- 从python列表创建MySql表
- [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表
- Laravel - 如何为用户赋予多重角色?
- 获取项目列表的更好方法:缓存序列化数据与数据库查询或其他?
- 如何从php中的数据库表创建表单下拉列表?
- MySQL查询返回用户的收件人列表
- 迭代angularjs中对象中的属性列表
- 调用另一个html页面后,选择列表值不会保持不变