在一个MySQL表中返回的项目不存在于另一个MySQL表中,要考虑2列

在一个MySQL表中返回的项目不存在于另一个MySQL表中,要考虑2列,mysql,Mysql,我想返回表1中所有处于活动状态且表2中没有共享相同坐标(lat、lng)的项目的邮政编码。 即,在以下报税表中: AB11AC 我知道有几种方法只检查一列,但不确定如何适应两列。我应该在查询中将这两列连接在一起,还是有更有效的方法?我的每个表都有大约200万个条目 表1: postcode lat lng active ------------------------- AB11AA 55 1 Y AB11AB 56 1 Y AB11AC 57 1

我想返回表1中所有处于活动状态且表2中没有共享相同坐标(lat、lng)的项目的邮政编码。 即,在以下报税表中:

AB11AC
我知道有几种方法只检查一列,但不确定如何适应两列。我应该在查询中将这两列连接在一起,还是有更有效的方法?我的每个表都有大约200万个条目

表1:

postcode  lat  lng active
-------------------------
AB11AA   55   1    Y
AB11AB   56   1    Y
AB11AC   57   1    Y
表2:

postcode  lat  lng active
--------------------------
AB11AA   55   1   Y
AB11AD   56   1   Y
AB11AE   59   1   Y

您可以使用
左连接

select *
from table1 t1
left join table2 t2
  on t1.lat = t2.lat
  and t1.lng = t2.lng
where t1.active = 'Y'
  and t2.postcode is null

或者您可以在
WHERE
子句中使用
notexists

select *
from table1 t1
where t1.active = 'Y'
  and not exists (select *
                  from table2 t2
                  where t1.lat = t2.lat
                    and t1.lng = t2.lng)