我简化了很多查询,它要大得多,但只有这一个是问题所在。
管理员用户应能看到所有记录,而非管理员用户则不能。
对于当前登录的用户,我有一个变量@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
有没有更好的方法来做这件事,这样我就不会有两次查询了?
发布于 2020-07-21 12:11:52
一个简单的OR
就可以做到这一点:
select *
from atable a
inner join user u
on a.user = u.user
where @isadmin = 1 or b.IsAdmin <> 1
发布于 2020-07-21 12:09:38
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;
https://stackoverflow.com/questions/63014225
复制相似问题