我有两个表,用户和角色,一个用户可以有多个角色
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。
答案 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')