我有一个包含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'
但它不起作用。有人可以帮忙吗?
答案 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)