Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库-检索未使用位置的结果_Mysql_Sql_Database_Select_Database Design - Fatal编程技术网

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

哇。@谢谢……我很感激,我的好先生!:)现在有意义:请考虑接受一个答案,表明它帮助你,通过点击复选标记图标。