2013-03-28 46 views
1

我有两个表,用户和角色,一个用户可以有超过1角色Mysql的排除记录

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


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

我有就是做和无法弄清楚,如何可以检索的数据用户whos的角色并不是 ,即使是某些整数。恩。用户PETER能有角色ID的5个和2个,我想获得的是,如果彼得角色ID 3,他从结果集排除了,不管他有角色ID 5.

+1

你可以使用NOT IN(子查询) –

回答

1
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子句中的子查询将选择所有谁具有3的角色ID,然后它会排除那些ID的(彼得),用NOT IN(),从用户选择的ID(如彼得)。

+0

谢谢)!像魅力一样工作 – steelseriesmm

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') 
+0

如果彼得角色3和5,这仍然将选择彼得作为角色5.用户要求它不选择彼得在所有如果角色3是他的角色中的任何一个。清除它约翰 –

+0

谢谢,thhats正是我彪 – steelseriesmm

+0

@steelseriesmm更新我的回答 –