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