Sql 一个表中的记录不存在于另一个表中

Sql 一个表中的记录不存在于另一个表中,sql,Sql,我正在尝试使用左连接,不存在,不在,我想要追踪表中的记录,期望使用外键instance=id从条件表中匹配记录。当我执行查询时,它显示为空(无记录) 左连接 SELECT p.id, p.dept FROM pursuit p LEFT JOIN condition c USING (dept) WHERE p.id = c.instance 不存在 SELECT p.id, p.dept FROM pursuit p WHERE p.id NOT EXISTS IN (SELECT

我正在尝试使用左连接,不存在,不在,我想要追踪表中的记录,期望使用外键instance=id从条件表中匹配记录。当我执行查询时,它显示为空(无记录)

左连接

SELECT p.id, p.dept
FROM 
pursuit p LEFT JOIN condition c USING (dept)
WHERE 
p.id = c.instance
不存在

SELECT p.id, p.dept
FROM 
pursuit p 
WHERE 
p.id NOT EXISTS IN (SELECT c.instance FROM condiiton c)
不在

SELECT p.id, p.dept
FROM 
pursuit p 
WHERE 
p.id NOT IN (SELECT c.instance FROM condiiton c)
桌子

condition 

id instance dept
1     3      5
5     2      5
2     7      5
3     4      5
4     10     5
5     2      3
6    15      6    

pursuit 

  id   name  dept
  3    C1     5 
  2    C9     5
  7    C77    5
  4    C9     5
  10   C6     5  
 19   C23     5
 17   C45     5
 15   C12     5
 23   C33     5 
3,2,7,4=部门5的匹配记录

19,17,15,23=与第5部门的记录不匹配

输出

id    name      dept
 19   C23         5
 17   C45         5
 15   C12         5
 23   C33         5
编辑2:


这将返回条件表中不存在的追踪行

我将使用
不存在

SELECT P.*
FROM pursuit p 
WHERE NOT EXISTS (SELECT 1 
                  FROM condition c 
                  WHERE p.id = c.instance
                  );

唯一的问题是,
不存在
您还没有在它们之间建立任何关系。

而且应该是这样。您的输出有什么问题?我们可以看到,对于每个追踪id(3,7,2,10,15,4),都存在一个p.id=c.instance的条件行。因此,当您使用NOT exists或NOT in时,它正确地不返回任何内容。George Menoutis-我们是否有其他方法来改进查询。您所说的“改进”是什么意思?如果你的意思是更快,那么不,它是好的,因为它是。你还需要什么吗?我不明白为什么我的问题分数是-2票。堆栈溢出只针对标准开发人员或学习者。请考虑添加期望的输出。查询正在工作。它显示了两个表中的所有记录,但我只希望pursuit table.query中的记录被编辑。。如果您只需要pursuit中的数据,只需避免joinI需要pursuit表中的记录,需要condition表中的匹配记录,因此,在这种情况下,我们需要两个表。我正在通过避免condition表中的匹配记录来从pursuit表中查找不匹配的记录。仍然不清楚:请添加具有预期输出的表
SELECT P.*
FROM pursuit p 
WHERE NOT EXISTS (SELECT 1 
                  FROM condition c 
                  WHERE p.id = c.instance
                  );