标记一个表中的行,其中值存在于连接表中?

和风

对于我的查询,我有两个表,定义如下:

权限表:

| permission_id | permission_description |
|---------------|------------------------|
|             1 | Create User            |
|             2 | Edit User              |
|             3 | Delete User            |

users_permissions表:

| permission_id | user_id |
|---------------|---------|
|             1 |       1 |
|             1 |       2 |
|             3 |       2 |
|             3 |       5 |
|             1 |       3 |
|             3 |       1 |

现在,我需要检索列表的所有的权限permissions表,其中一列指示是否与用户user_id1存在对于每个权限users_permissions表。

所以,我想要的查询输出是:

| permission_id | permission_description | has_permission |
|---------------|------------------------|----------------|
|             1 | Create User            | TRUE           |
|             2 | Edit User              | FALSE          |
|             3 | Delete User            | TRUE           |

到目前为止,我已经尝试了以下查询,但它返回permissions所有user_id值的条目

SELECT permissions.permission_id,
       permission_description,
       CASE WHEN user_id = 1 THEN 'TRUE' ELSE 'FALSE' END AS has_permission
FROM permissions
       INNER JOIN users_permissions ON permission.permission_id = users_permissions.permissions_id;

我如何将其限制为每个条目permission


为清楚起见,最终目标是获取可用权限列表并标记用户已经拥有的权限。

戴尔K

如果您只想知道一个用户的答案,那么exists subquery就可以完成这项工作 - 无需加入。

SELECT P.permission_id
  , P.permission_description
  , CASE WHEN exists (select 1 from users_permissions UP where UP.permission_id = P.permission_id and UP.user_id = 1) THEN 'TRUE' ELSE 'FALSE' END AS has_permission
FROM [permissions] P

PS - 我不建议将表称为permissionsSQL Server 中的保留字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从一个表中选择行,其中值存在于另一个表的数组中

来自分类Dev

从多个表中选择仅存在于其中一个表中的一行

来自分类Dev

多个表的逆集,其中不是所有记录都存在于一个表中

来自分类Dev

order by 列存在于另一个表中并删除多余的行

来自分类Dev

查找表中存在于另一个表中的行的百分比?

来自分类Dev

如果标识符不存在于另一个表中,则删除表中的行

来自分类Dev

要求记录存在,如果它们存在于MySQL的另一个表中

来自分类Dev

返回存在于一个表中但不在另一个表中的结果

来自分类Dev

交叉表存在于一个数据库中,而不存在于另一个数据库中

来自分类Dev

如果一个表不存在于另一个表中,该如何删除

来自分类Dev

列值必须存在于另一个表的非主列中

来自分类Dev

生成一个不存在于SQL Server表中的随机数

来自分类Dev

MySQL查询按存在于另一个表中

来自分类Dev

T-SQL列,指示一个或多个记录存在于单独的表中

来自分类Dev

如何获得此查询以打印仅存在于一个表中的记录?

来自分类Dev

列值必须存在于另一个表的非主列中

来自分类Dev

MySQL 查询不存在于另一个表中

来自分类Dev

SQL 只返回存在于另一个表中的 id

来自分类Dev

FirebaseRecyclerAdapter 检查 Id 是否存在于另一个表中

来自分类Dev

如果数据存在于另一个表中,如何从表中获取数据 C# LINQ

来自分类Dev

返回表中的所有行,并用新列指示它们是否存在于另一个表中

来自分类Dev

返回表中的所有行,并用新的列指示它们是否存在于另一个表中

来自分类Dev

如果该行存在于另一个Datable中,则从该数据表中删除该行

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

如果所有记录都存在于SQL Server的另一个表中,则返回行列表

来自分类Dev

SQL-如何根据用户是否存在于另一个表中来选择该用户?

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

如果该数据不存在于另一个表中,该如何选择该数据?

来自分类Dev

angular 5 和 firebase/angularfire,使用键检查键是否存在于另一个表中

Related 相关文章

  1. 1

    从一个表中选择行,其中值存在于另一个表的数组中

  2. 2

    从多个表中选择仅存在于其中一个表中的一行

  3. 3

    多个表的逆集,其中不是所有记录都存在于一个表中

  4. 4

    order by 列存在于另一个表中并删除多余的行

  5. 5

    查找表中存在于另一个表中的行的百分比?

  6. 6

    如果标识符不存在于另一个表中,则删除表中的行

  7. 7

    要求记录存在,如果它们存在于MySQL的另一个表中

  8. 8

    返回存在于一个表中但不在另一个表中的结果

  9. 9

    交叉表存在于一个数据库中,而不存在于另一个数据库中

  10. 10

    如果一个表不存在于另一个表中,该如何删除

  11. 11

    列值必须存在于另一个表的非主列中

  12. 12

    生成一个不存在于SQL Server表中的随机数

  13. 13

    MySQL查询按存在于另一个表中

  14. 14

    T-SQL列,指示一个或多个记录存在于单独的表中

  15. 15

    如何获得此查询以打印仅存在于一个表中的记录?

  16. 16

    列值必须存在于另一个表的非主列中

  17. 17

    MySQL 查询不存在于另一个表中

  18. 18

    SQL 只返回存在于另一个表中的 id

  19. 19

    FirebaseRecyclerAdapter 检查 Id 是否存在于另一个表中

  20. 20

    如果数据存在于另一个表中,如何从表中获取数据 C# LINQ

  21. 21

    返回表中的所有行,并用新列指示它们是否存在于另一个表中

  22. 22

    返回表中的所有行,并用新的列指示它们是否存在于另一个表中

  23. 23

    如果该行存在于另一个Datable中,则从该数据表中删除该行

  24. 24

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  25. 25

    如果所有记录都存在于SQL Server的另一个表中,则返回行列表

  26. 26

    SQL-如何根据用户是否存在于另一个表中来选择该用户?

  27. 27

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  28. 28

    如果该数据不存在于另一个表中,该如何选择该数据?

  29. 29

    angular 5 和 firebase/angularfire,使用键检查键是否存在于另一个表中

热门标签

归档