Mysql排除记录

标签 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,我想得到的是如果 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/

相关文章:

mysql - 如何优化具有许多相同选择的 SQL 查询?

java - 使用 Intellij IDEA 格式化类似于类的 Java 记录字段

iphone - 使用 iPhone SDK 同时播放和录制声音?

mysql - 用 1 到 n 更新整列

mysql - 单个查询中的多个 in select 语句

java - 尝试使用 java 应用程序连接 mySQL 数据库一直遇到困难

php - 插入具有相同数据库但具有相同ID的两个表

components - 顶层使用带有 VHDL 记录的端口映射

postgresql - SQL : cannot cast type record to integer, PostgreSQL

php - 有没有更有效的方法来压缩这些mysql查询?