mysql - 如何构造一个命令来连接 mySQL 中的 3 个不同的表?

标签 mysql sql join

我在 MySQL 中有三个不同的表:

给定一个用户 ID,我如何获取该用户的角色名称列表? 例如,user_id = 1 我需要一个这样的列表(1,deleteuser,modifyuser,viewuser)

如何构建 SQL 命令来获取这样的列表?

最佳答案

JOIN 这三个表如下所示:

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

但是,如果您希望将每个用户的角色列表连接成一个字符串。像这样使用 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 - 如何构造一个命令来连接 mySQL 中的 3 个不同的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284543/

相关文章:

mysql - 在同一字段的 SQL WHERE 子句中使用 'AND'

SQL 查询 - 在组中选择 'last updated' 记录,更好的数据库设计?

php - 连接表并保留主表中的所有行

mysql - 根据另一个表中存在的索引创建 is_sold MySQL 字段

php - 如何在数据透视表 Laravel 中使用附加字段

MySQL 一对多 : Select where only one relations exists

mysql - 修复自增mysql

sql - 在 SQL 中编写此查询的正确方法是什么?

mysql - 对通过第三个表链接到第二个表的表中的值求和

php - 我的查询是重复结果? MySQL/PHP/代码点火器