gpt4 book ai didi

mysql - 基于列值的条件 sql WHERE 子句

转载 作者:可可西里 更新时间:2023-11-01 07:59:54 28 4
gpt4 key购买 nike

我有一个存储用户的表。每个用户都有一个 ID、一个 Name 和一个 Access Level。三种可能的访问级别AdministratorManagerSimple User

我想要的是根据 Access Level 值有条件地从此表中进行选择。我演示了以下逻辑:

  1. 如果用户是管理员,则选择所有用户(管理员、经理、简单用户)
  2. 否则,如果用户是 Manager,则选择所有 Manager 和所有 Simple Users
  3. 否则,如果用户是 Simple User,则只选择他自己

这可能吗?

最佳答案

Providing Access Level 是一个整数,随着实际访问级别的增加而增加:管理员 = 3经理 = 2用户 = 1

然后

SELECT * FROM USERS
WHERE ACCESS_LEVEL <= (SELECT ACCESS_LEVEL FROM USERS WHERE ID = @ID)

如果相反,只需将小于号切换为大于号即可。

适用于 SQL 服务器

编辑:要得到你想要的,你可以使用这样的东西:

SELECT id,name FROM users where ID = @id
UNION DISTINCT
SELECT id, name from users where access_level <=
(select case when access_level = 1 then 0 else access_level end
from users where id = @id)

使用这样的查询,您将选择当前 access_level 或更低级别的所有用户。只有当您的 access_level 为 1(例如普通用户)时才会出现异常(exception)情况,那么只会选择您自己的用户。

关于mysql - 基于列值的条件 sql WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175949/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com