【问题标题】:Using NOT IN with NOT EQUAL when querying查询时使用 NOT IN 和 NOT EQUAL
【发布时间】:2019-07-18 06:37:10
【问题描述】:

我有一个名为“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 但职位 ID 不是 4 的用户。注意,这是在 MySQL 中,我对它比较陌生,但我会想象要遵循的 SQL 逻辑。

SELECT

Person

FROM

Positions

WHERE Person NOT IN

(
SELECT Person

FROM
Positions

WHERE
Position_ID <> 4
)

我希望结果只显示 Joe 和 Brad

无论我做得多么简单,我的结果都没有任何回报。

【问题讨论】:

  • 编辑:刚刚修复了外观

标签: mysql sql database querying


【解决方案1】:

首先,您正在对“Persons”进行 SELECT。您有两列名为 Position Id 和 Person。从那开始

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

【讨论】:

  • 这只是我帖子中的一个错字。仍然产生空白。
  • 子查询返回什么? (SELECT person WHERE position_id != 4)
【解决方案2】:

我会简单地使用聚合

select person
from positions
group by person
having min(position) = max(position) and  -- all positions are the same
       min(position) = 4;

【讨论】:

  • 虽然我不明白这里的逻辑,但这似乎可以解决问题。非常感谢!
猜你喜欢
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
相关资源
最近更新 更多