主要是为了查询在一个表中出现,而不在另外一个表中出现的数据,具体来讲:html
以下图所示, 有A、B两个表,其中B表的Aid字段参照A表的主键id,为了查询在A表中出现,却没有被B表引用的数据;数据库
限定条件:A和B中is_deleted字段为‘n’ 而且B中type为‘common’。url
使用not in能够方便实现,具体为:spa
select
p.id, p.is_deleted, q.id fromA as p left join B as q onq.is_deleted = 'n' and q.type = 'common' wherep.is_deleted = 'n' and q.id is null
其中on主要是对B表进行限定,不会对A表进行限定,即便将p.is_deleted = 'n' 写在on以后也没有做用;code
where是对造成的虚拟表进行再次限定,能够将对A表的查询条件设定在这里,具体结果以下:htm
固然还能够使用其余方法,好比not in 等,能够参考:blog
(1) (数据库篇) SQL查询~ 存在一个表而不在另外一个表中的数据