查找点不 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)
);