【问题标题】:Select Where inside if then else in SQL在 SQL 中选择 Where inside if then else
【发布时间】:2017-07-22 10:12:22
【问题描述】:

我有一个包含 10 列和 20 条记录的 SQL 表。其中一列包含作为 us_name 的用户名。我需要根据当前登录的用户过滤掉表行。为此,我使用以下 SQL 命令。假设用户是A,B,C,D,表名是ab_cd

SELECT *
FROM ab_cd
WHERE us_name = 'current_user'

它工作得很好。但是对于用户D,我希望完整的表格显示为D 是超级用户。我需要这样的东西。

IF Current_user = 'D'
Then
SELECT *
FROM ab_cd
Else
SELECT *
FROM ab_cd
WHERE us_name = 'current_user'

但它不起作用。有人可以帮忙吗?

【问题讨论】:

  • SQL-Server 还是 mysql?那是非常不同的 DBMS

标签: mysql sql sql-server select


【解决方案1】:

您可以使用逻辑 or 运算符来模拟此行为。假设@current_user 是一个保存用户名的变量:

SELECT *
FROM   ab_cd
WHERE  @current_user = 'd' or us_name = @current_user

当然,这可以使用in 运算符来简化:

SELECT *
FROM   ab_cd
WHERE  @current_user IN ('d', us_name)

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2012-03-20
    • 2016-09-11
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多