查询时

时间:2019-07-17 22:14:26

标签: 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但ALSO的职位ID为非4的用户。请注意,这在MySQL中是很新的,但我可以想象要遵循的SQL逻辑。

SELECT

Person

FROM

Positions

WHERE Person NOT IN

(
SELECT Person

FROM
Positions

WHERE
Position_ID <> 4
)

我希望结果只显示Joe和Brad

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我只会使用聚合

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