我有 2 个表,表 #1 包含方形多边形/网格,表 #2 包含行政区域的多边形。我使用 ST_Intersects() 函数使用表 #2 中的数据更新了表 #1。这是我的查询的示例:
update table_grid
set data1 = table_administrative.data1
from table_administrative
where ST_Intersects(table_grid.geom, table_administrative.geom)
查询将如何运行?那么在两个或多个行政区域有交叉点的网格又如何呢?是随机选择,还是最大的区域,还是基于质心?
案例示例如图所示
在两个或多个行政区域有交叉点的网格怎么办?是随机选择,还是最大的区域,还是基于质心?
update..from
的工作原理:
使用
时,您应该确保连接为要修改的每一行最多生成一个输出行。换句话说,目标行不应连接到其他表中的多个行。如果是这样,那么只有一个连接行将用于更新目标行,但将使用哪一个是不容易预测的。FROM
即使您看到最终使用的内容具有一定的重复性,它也是不可靠的。话虽这么说,您可以根据您自己的标准(例如质心的接近度、重叠区域)更正您的查询以显式选择您想要的特定查询,或者仅按字母顺序选择 具有较低/较早 id 的查询。
使用distinct on
、
order by..limit 1
、
row_number()over()
等添加子查询