如果在SQL中,则选择Where where else

时间:2017-03-02 15:34:53

标签: mysql sql sql-server select

我有一个包含10列和20条记录的SQL表。其中一列包含用户名us_name。我需要根据登录的当前用户过滤掉表行。为此,我使用以下SQL命令。假设用户为ABCD且表名为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'

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

1 个答案:

答案 0 :(得分:3)

您可以使用逻辑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)