0

我正在尝试根据不同的条件和几何交集更新我的 PostgreSQL 表中的多个列。
我的输入表由数百万个 100mtx100mt 的正方形组成,其结构是:

id_grid|geom|road1|road2|road3|road4|road5|road6|

Road 1,2,3...是空的。

我的第二个表是“道路”,它由“传奇”字段中描述的 6 种道路组成:

id_road|geom|legenda

我需要Road 1,2,3...根据与网格相交的道路类型来更新带有 X 的列。例如,如果 id 为 1 的广场与道路“road1”和“road3”相交,则其行应为:

id_grid|geom|road1|road2|road3|road4|road5|road6|
1      |abc |x    |null |x    |null |null |null |

为了做到这一点,我使用了这个查询:

update
    anagr_grid100_marche_clc
set
    mob_autostrada = case s.legenda WHEN 'AUTOSTRADA' THEN 'x' END,
    mob_strada_principale = case s.legenda WHEN 'STRADA PRINCIPALE' THEN 'x' END,
    mob_strada_secondaria = case s.legenda WHEN 'STRADA SECONDARIA' THEN 'x' END,
    mob_strada_locale = case s.legenda WHEN 'STRADA LOCALE' THEN 'x' END,
    mob_altra_strada = case s.legenda WHEN 'ALTRA STRADA' THEN 'x' END,
    mob_ferrovie = case s.legenda WHEN 'FERROVIA' THEN 'x' END
from
    stradebis as s
where
    st_intersects(anagr_grid100_marche_clc.geom, s.geom)

但它的输出不正确。基本上,多个列应同时更新为“x”,但此查询不允许这样做:如果第一个更新的列具有值“x”,则其他列在任何情况下都不会。

有人可以帮助我吗?

4

0 回答 0