mysql - 数据库 - 检索未使用位置的结果

标签 mysql sql database select database-design

如何检索数据库中未使用职位的结果。这是一个例子:

TABLE POSITION
PosID    PosName
101      President
102      Vice President
103      Secretary
104      Treasurer
105      Auditor
106      Srgt of Arms

TABLE OFFICER
OfficerID     OrganizationID   Name   PosID (FK to TABLE POSITION)
1001          2016-02081-0    Kris    101
1002          2016-02081-0    Nitche  102
1003          2016-02081-0    Russel  103

现在我希望我的查询从 TABLE POSITION 中检索职位,其中该职位未被某个组织使用。这就是我所做的,它返回了太多结果:

SELECT * 
FROM POSITION, OFFICER 
WHERE OrganizationID = '2016-02081-0' AND OFFICER.PosID != POSITION.PosID;

请注意,我只想检索以下结果

TABLE POSITION
PosID    PosName
104      Treasurer
105      Auditor
106      Srgt of Arms

它应该检索未被“2016-02081-0”的 organizationID 使用的位置

最佳答案

您可以使用 not in 运算符:

SELECT PosID
FROM   position
WHERE  PosID NOT IN (SELECT PosID 
                     FROM   officer)

或者不存在运算符:

SELECT PosID
FROM   position p
WHERE  NOT EXISTS (SELECT *
                   FROM   officer o
                   WHERE  p.PosId = o.PosId)

关于mysql - 数据库 - 检索未使用位置的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35680088/

相关文章:

php - 关于重复 key 更新我做错了什么

php - 如何通过比较PHP中的选项值将下拉值中的值插入数据库表?

sql - TSQL where 情况

my.cnf 中具有多种数据库编码的 MySQL

php - 如何连接具有多个公共(public)字段的两个表以进行搜索过滤器

php - 搜索引擎的困境

mysql - 在两个表中插入相同的时间戳

php - 最好的方法是如何简单地创建日历?

MySQL 错误 1062 : Duplicate entry for key

php - 如何将动态创建的文本框值插入到php中的数据库