Mysql排除记录

时间:2013-03-28 12:30:46

标签: mysql record

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

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


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

我必须做的事情是无法弄清楚的,如何检索roleid不是的用户数据 甚至到一些整数,为。恩。用户PETER可以拥有roleID的5和2,我想要得到的是,如果彼得有角色3,他从结果集中排除,无论他是否有角色5。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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')