[英]Postgresql update using join using postgis
我有兩個名為MAIN_WAYS和SUB_WAYS的表。
MAIN_WAYS (id, producer, geoemtry, length, size, ...)
SUB_WAYS (id, producer, geometry, ...)
因此,我想更新SUB_WAYS生產者列,使其與MAIN_WAYS生產者列相同,以接觸幾何。 我可以將這兩個表加入sql select。
select
sw.id sw_id,
sw.producer sh_producer,
mw.id mw_id, mw.producer mw_producer
from
sub_ways sw,
main_ways mw
where
st_touches(mw.geometry, sw.geoemtry);
和
sw_id sh_producer mw_id mw_producer
1 null 1 x
2 null 2 x
3 null 3 y
4 null 5 z
一種主要方式可能涉及多種子方式。 在這種情況下,所有觸及一個地鐵的地鐵都將是同一生產者。
update
sub_ways
set
producer = mw.producer
from
sub_ways sw
inner join
main_ways mw on st_touches(mw.geometries, sw.geoemtry)
where
st_touches(mw.geometries, sw.geoemtry) and
sw.producer is null;
但是此查詢將所有子方式生產者設置為相同的值。
如何更新呢?
您尚未將更新表與結果(from子句)結合在一起,因此它已更新為set from子句的最后一條記錄中的值。
update
sub_ways sw
set
producer = mw.producer
from
main_ways mw
where
st_touches(mw.geometries, sw.geoemtry) and
sw.producer is null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.