sql - 在角色表的用户表中包含管理员角色

标签 sql mysql roles rbac

有没有办法像这样查询用户表:

| id | username |
-----------------
| 1  | user1    |
| 2  | user2    |
| 3  | user3    |

和 user_roles 表:

| id_user | id_role |
---------------------
|    1    |    1    |
|    1    |    2    |
|    1    |    3    |
|    2    |    2    |
|    3    |    1    |

假设 id = 1 的角色是管理员角色,生成如下所示的结果:

| id | username | admin |
-------------------------
| 1  | user1    |   Y   |
| 2  | user2    |   N   |
| 3  | user3    |   Y   |

我认为可以使用嵌套的 SELECT 语句来完成,但我想知道使用 JOIN 是否可行。

编辑: 管理员列值不必是 Y 或 N,它可以是管理员角色 ID (1) 或 NULL 或任何让我知道用户是否是管理员的东西

最佳答案

我会试试这个:

select u.id, u.username, if (id_role is null,  'N', 'Y') as is_admin
  from users u
  left outer join user_roles r
    on u.id = r.id_user and r.id_role = 1

但我不是 100% 确定。

关于sql - 在角色表的用户表中包含管理员角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063901/

相关文章:

sql - 获取尚未分配给成员查询的角色

mysql获取唯一日期的总和

php - 使用php在不同的sql表中导入csv文件的选定列

数据库插入时的 MySQL-Python 字符编码异常

qt - QML,GridView 委托(delegate) : ReferenceError: `<variable_name>` is not defined

roles - RBAC 角色与业务功能

html - 使用sql将参数插入HTML

php - 有没有更简单的方法来编写此内容,以便显示最新条目而不是以前的条目?

php - 使用 PHP 从关系数据库获取数据时出错

mysql - 我的SQL--如何将一个数据库的数据插入另一个数据库