【问题标题】:Default values when NULLNULL 时的默认值
【发布时间】:2014-07-08 23:08:13
【问题描述】:

与我昨天问的这个已回答的问题有关 Recursive query where anchor and member have unions

我有一个包含

的联结表
menuItem | roleID | userID
1        | 2      | NULL
1        | 5      | NULL
2        | NULL   | 81

我有一个角色表

roleID | roleName
1      | admin
3      | super admin
5      | basic user

我希望在查询有权访问此菜单项的用户时也包括到管理员用户(roleIDs 1 and 3)。在链接的问题中,我可以通过在 join 子句中包含 ID 来包含管理员用户。但是因为当包含单个用户时 roleID 为空,我永远无法生成结果:

userName | menuItem
admin1   | 2
admin2   | 2
realUser | 2

充其量我已经能够得到

userName | menuItem
realUser | 2
realUser | 2
realUser | 2

如何编写此代码以便将管理员用户包含在结果中?谢谢。

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    听起来您想将表格用户加入表格菜单 当

    • 用户的角色 ID 为 1 或 3,菜单角色 ID 为空
    • 或者user表中的userid与userid匹配
    • 或者用户的角色 id 与菜单的角色 id 匹配

    看起来像这样

    From 
           users u
           INNER JOIN Menu m
           ON (u.RoleID in (1,3) and m.roleID  is Null)
              or u.UserId = m.userId
              or u.RoleId = m.RoleId
    

    【讨论】:

      猜你喜欢
      • 2020-12-25
      • 2011-07-20
      • 2012-01-18
      • 2018-11-17
      • 2014-09-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多