我想返回table1中所有活动的邮政编码,并且在table2中没有任何共享相同坐标(lat,lng)的项目。 即在下面的回报:
AB11AC
我知道有几种方法只是检查一列,但不知道如何适应2列。我应该在查询中将两列连接在一起还是有更有效的方法?我的表每个都有大约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
答案 0 :(得分:1)
您可以使用LEFT JOIN
:
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
或者您可以在NOT EXISTS
子句中使用WHERE
:
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)