2

我有两个表,用户和角色,一个用户可以有多个角色

user: ID | FIRSTNAME | LASTNAME | etc..
       1 | PETER     | Blomp    | 


role: ID |  ROLEID   | USERID (which is user ID)
      70 |    5      |    1 (peter)
      71 |    2      |    1

我必须做但无法弄清楚的是,如何检索角色 ID 甚至不是某个整数的用户的数据。前任。用户彼得可以有角色 ID 5 和 2,我想要得到的是如果彼得有角色 3,他从结果集中排除,不管他是否有角色 5。

4

2 回答 2

3
SELECT
    user.ID, user.FirstName, user.LastName
FROM
    user
WHERE
    user.ID NOT IN (
                    SELECT ID FROM role WHERE role.RoleID = '3'
                   )

这使用了 MySQL 中所谓的子查询。WHERE 子句中的子查询将选择 RoleID 为 3 的所有 ID(例如 Peter)。然后它将使用NOT IN(),从用户选择中排除这些 ID(Peter)。

于 2013-03-28T12:34:52.400 回答
0

你可以简单地使用NOT IN

select * from user inner join role on role.userid = user.id
user.ID NOT IN ( SELECT ID FROM role WHERE role.RoleID = '3')
于 2013-03-28T12:33:22.677 回答