mysql - 查询时使用 NOT IN 和 NOT EQUAL

标签 mysql sql database querying

我有一个名为“Positions”的表,我正在尝试从中获取特定信息。举个例子:

Position ID           Person

4                     Joe
5                     Mary
4                     Mary
6                     Shawn
4                     Brad
4                     Ken
8                     Ken

请注意,一个人可以有多个职位 ID。

我需要提取职位 ID 等于 4 的所有人员的姓名,但他们也不能拥有除 4 之外的其他职位 ID。

我尝试创建职位 ID 不为 4 的所有用户的列表,然后说我不想要该列表中的任何用户。逻辑是,这将删除 ID 不为 4 的人员,以及 ID 为 4 但也具有除 4 之外的职位 ID 的用户。注意,这是在 MySQL 中,我对它相当陌生,但我想象要遵循的 SQL 逻辑。

SELECT

Person

FROM

Positions

WHERE Person NOT IN

(
SELECT Person

FROM
Positions

WHERE
Position_ID <> 4
)

我希望结果只显示 Joe 和 Brad

无论我做得多么简单,我的结果始终没有得到任何返回。

最佳答案

首先,您正在对“Persons”执行 SELECT。您有两列,分别名为“职位 ID”和“人员”。从那开始

SELECT * FROM Positions WHERE person NOT IN (SELECT person WHERE position_id != 4);

关于mysql - 查询时使用 NOT IN 和 NOT EQUAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57084658/

相关文章:

mysql - 在 MySQL 中一对多分组

mysql - 如何在 SQL 中获取具有 MAX 和 MIN 值的行的 ID

database - DynamoDB Perl 抽象

php - 未找到 ZF2 类 PDO,但在 php 配置中启用了 PDO

php - MySQL将玩家信息与时间连接起来

sql - PostgreSql - 订购数字字符串和数字范围的混合

.net - ibm.data.informix 没有从数据库中获取正确的数据

sql-server - 为 SQL Server 群集准备数据库

php - 用于日程安排和考勤卡系统的最佳 php/mysql 日期格式?

sql - 绿色突出显示的 SQL 表名称表示什么?