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

更多相关文章

  1. mysql 排序两个字段/列表先根据时间升序排序,时间相同再根据商家I
  2. 从python列表创建MySql表
  3. [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表
  4. Laravel - 如何为用户赋予多重角色?
  5. 获取项目列表的更好方法:缓存序列化数据与数据库查询或其他?
  6. 如何从php中的数据库表创建表单下拉列表?
  7. MySQL查询返回用户的收件人列表
  8. 迭代angularjs中对象中的属性列表
  9. 调用另一个html页面后,选择列表值不会保持不变

随机推荐

  1. 2021年放弃Python选择Go的原因
  2. golang接口可以嵌套吗
  3. 运行golang程序提示进程无法启动
  4. golang mysql操作介绍
  5. golang反向代理无法访问
  6. golang项目如何部署到linux服务器
  7. go get命令下载扩展包的几点说明
  8. golang读写文件的几种方法
  9. golang安装步骤
  10. go语言的25个关键字介绍