簡體   English   中英

使用Postgis的聯接使用Postgresql更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM