我有两个表,用户和角色,一个用户可以有多个角色
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,我想得到的是如果 Peter 有 roleid 3,他从结果集中排除,不管他是否有 roleid 5。
最佳答案
SELECT
user.ID, user.FirstName, user.LastName
FROM
user
WHERE
user.ID NOT IN (
SELECT ID FROM role WHERE role.RoleID = '3'
)
这使用了所谓的 subquery在 MySQL 中。 WHERE 子句中的子查询将选择 RoleID 为 3 的所有 ID(例如 Peter)。然后它将使用 NOT IN()
排除这些 ID(Peter)。 , 来自用户的选择。
关于Mysql排除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15681889/