Mysql 数据库-检索未使用位置的结果
如何检索数据库中未使用位置的结果。以下是一个例子:Mysql 数据库-检索未使用位置的结果,mysql,sql,database,select,database-design,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
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
现在,我希望我的查询从表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”的组织ID未使用的职位您可以使用
不在
操作符:
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)
或者不存在
运算符:
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)
您可以使用
不存在
:
SELECT *
FROM POSITION
WHERE NOT EXISTS (SELECT 1
FROM OFFICER
WHERE OrganizationID = '2016-02081-0' AND
OFFICER.PosID = POSITION.PosID);
上面的查询返回所有与
官员不相关的记录,这些记录具有组织ID='2016-02081-0'
,我将使用左连接来完成此操作。这样我们就不需要子查询了
SELECT p.*
FROM Position p
LEFT JOIN Officer o on o.PosID = p.PosID and OrganizationID = '2016-02081-0'
WHERE o.OfficerId is null
哇。@谢谢……我很感激,我的好先生!:)现在有意义:请考虑接受一个答案,表明它帮助你,通过点击复选标记图标。