SQL 条件,管理员用户与非管理员用户
SQL condition, Admin user vs non admin user
我大大简化了查询,它更大了,但只有这一个是问题所在。
管理员用户应该看到所有记录,非管理员用户不应该。
我有一个变量@IsAdmin
用于当前登录的用户
那我得去拿名单了
if @isadmin = 0
begin
/* non admin user */
select *
from atable a
inner join user u where a.user=b.user and b.IsAdmin <> 1
end
else
begin
/* admin user */
select *
from atable a
inner join user u where a.user=b.user
end
有没有更好的方法来做到这一点,所以我没有两次查询?
or
怎么样?
select *
from atable a join
user u
on a.user = u.user or @IsAdmin = 1;
我不明白条件 IsAdmin <> 1
应该做什么。好像没必要。
也就是说,我怀疑您需要考虑当前用户。所以我猜更像是:
select a.*
from atable a
where a.user = @current_user or @isAdmin = 1;
一个简单的 OR
应该可以解决问题:
select *
from atable a
inner join user u
on a.user = u.user
where @isadmin = 1 or b.IsAdmin <> 1
我大大简化了查询,它更大了,但只有这一个是问题所在。
管理员用户应该看到所有记录,非管理员用户不应该。
我有一个变量@IsAdmin
用于当前登录的用户
那我得去拿名单了
if @isadmin = 0
begin
/* non admin user */
select *
from atable a
inner join user u where a.user=b.user and b.IsAdmin <> 1
end
else
begin
/* admin user */
select *
from atable a
inner join user u where a.user=b.user
end
有没有更好的方法来做到这一点,所以我没有两次查询?
or
怎么样?
select *
from atable a join
user u
on a.user = u.user or @IsAdmin = 1;
我不明白条件 IsAdmin <> 1
应该做什么。好像没必要。
也就是说,我怀疑您需要考虑当前用户。所以我猜更像是:
select a.*
from atable a
where a.user = @current_user or @isAdmin = 1;
一个简单的 OR
应该可以解决问题:
select *
from atable a
inner join user u
on a.user = u.user
where @isadmin = 1 or b.IsAdmin <> 1