如何在Postgresql联接中使用Not Equals

时间:2016-02-29 06:48:38

标签: postgresql

我这样做:

 select * from schema2."Student" a INNER JOIN    
schema1."StudentMapping" b on ( a."StudentID" = b."StudentID") 
where a."IsRemoved" = false AND b."IsRemoved" = false

仅获取Student表中StudentMapping表中存在的那些记录,这里IsRemoved列用于软删除(即每当要删除任何记录时)从任何这些表中只有我将其设置为true,因此表中存在IsRemoved = false个记录)并且查询工作正常。现在我想要的是从Student表中获取所有那些StudentMapping表中没有的记录,所以我尝试了这个:

select * from schema2."Student" a INNER JOIN      
schema1."StudentMapping" b on ( a."StudentId" != b."StudentId") 
where a."IsRemoved" = false AND
b."IsRemoved" = false

但这会提供大量记录,超出我的预期,此查询有什么问题,或者Postgresql中是否有另一种方法可以从一个表中获取另一个表中不存在的匹配记录。< / p>

1 个答案:

答案 0 :(得分:1)

执行LEFT OUTER JOIN然后在where子句中,指定仅显示连接导致NULL的recod:

select * from schema1."Student" a LEFT OUTER JOIN    
schema1."StudentMapping" b on ( a."StudentID" = b."StudentID") 
where a."IsRemoved" = false
and b.StudentID IS NULL