查找点不 ST_EQUALS
Finding points not ST_EQUALS
在PostgreSQL + Postgis中我可以运行以下sql,它returns那些相同的点。
我试图找到那些不同的点,所以我将它嵌入到插入查询中以添加任何更新的点。那么如何让这个顶部与 ST_EQUALS 相反呢?我更喜欢空间查询解决方案。
SELECT
points_old.geom as points_old,
points_update.geom as points_update
FROM public.points_old
INNER JOIN public.points_update
ON ST_EQUALS(points_old.geom, points_update.geom)
我是这样解决的,但是有更好的方法吗?
SELECT points_update.geom
FROM points_update where geom NOT IN (
SELECT
--points_old.geom as points_old,
points_update.geom as points_update
FROM public.points_old
INNER JOIN public.points_update
ON ST_EQUALS(points_old.geom, points_update.geom)
)
您可以使用 not exists
并删除其中一个连接:
SELECT points_update.geom
FROM points_update
WHERE NOT EXISTS (
SELECT 1
FROM public.points_old
WHERE ST_EQUALS(points_old.geom, points_update.geom)
);
在PostgreSQL + Postgis中我可以运行以下sql,它returns那些相同的点。 我试图找到那些不同的点,所以我将它嵌入到插入查询中以添加任何更新的点。那么如何让这个顶部与 ST_EQUALS 相反呢?我更喜欢空间查询解决方案。
SELECT
points_old.geom as points_old,
points_update.geom as points_update
FROM public.points_old
INNER JOIN public.points_update
ON ST_EQUALS(points_old.geom, points_update.geom)
我是这样解决的,但是有更好的方法吗?
SELECT points_update.geom
FROM points_update where geom NOT IN (
SELECT
--points_old.geom as points_old,
points_update.geom as points_update
FROM public.points_old
INNER JOIN public.points_update
ON ST_EQUALS(points_old.geom, points_update.geom)
)
您可以使用 not exists
并删除其中一个连接:
SELECT points_update.geom
FROM points_update
WHERE NOT EXISTS (
SELECT 1
FROM public.points_old
WHERE ST_EQUALS(points_old.geom, points_update.geom)
);