获取数据

时间:2009-07-14 11:55:06

标签: sql sql-server

我有一个包含8列的数据库表。其中一列称为IsAdmin(其数据类型为Bit)。当且仅当登录用户是管理员时,我必须在网格视图中显示用户列表。

我该怎么做?哪个子句用于此?

4 个答案:

答案 0 :(得分:2)

不完全确定我理解正确。您要查看的“用户列表”是否也是您要选择的表格?我的理解是,这就是你需要的:

if exists (
  select *
  from MyUserList
  where IsAdmin = 1
    and UserName = SUSER_NAME()
)
begin
  select *
  from MyUserList /* Or whatever you need to do if the user is admin */
end
else
begin
/* Do whatever you need to do if the user is not an admin */
end  

答案 1 :(得分:1)

对我而言,听起来并不像您需要一个条款,但应该由您的应用程序中的业务逻辑处理。

e.g。如果您只想显示列表,如果登录用户是管理员,那么如果用户不是管理员,那么运行查询是没有意义的 - 这是对必要的数据包的往返。

相反,在您的应用程序中只有一些逻辑说“如果登录用户是管理员填充网格视图,否则不要”

答案 2 :(得分:0)

我可能会建议在应用程序中而不是在SQL中完成此操作。让应用程序检查谁是管理员并将其放入会话或cookie中,并在页面加载时检查会话/ cookie以确保用户是管理员以及他们是否显示信息。

如果你想在SQL中使用它,你应该提供一些额外的信息,比如表结构和表名。

马特

答案 3 :(得分:0)

解决方案太简单了,因为如果用户是admin的角色,你需要选择特定的数据,否则可能会选择其他数据,或者没有,所以请执行以下代码:

select * from [UserList] where IsAdmin = @UserRole and UserID = @UserID

在这种情况下,您将选择与此用户ID及其角色相关的数据。

希望根据我对问题的理解,这是有帮助的。