[英]How to update a table in postgis using ST_Intersects
我在 postgis 中有一張兩張桌子。 一個是點狀的 Bank,另一個是多邊形的 IndiaState。 這兩個表都有一個名為 State 的列。 對於 Bank state 列是空的,而 IndiaState 表中的 state 列有州名。 我想使用 ST_Intersects 填充 Bank 表中的 state 列。 我可以選擇屬於特定狀態的銀行積分
select ST_Intersection("IndiaState".geom, TN_Bank.geom) as inter
"Bank_Name", "Lat"
from "IndiaState" INNER JOIN TN_Bank ON ST_Intersects("IndiaState".geom, TN_Bank.geom)
where "IndiaState".state='KERALA'
上面的 sql 返回 66 行,這是正確的。
但是更新命令不能正常工作
update TN_Bank set "State"='KERALA' from
(select ST_Intersection("IndiaState".geom, TN_Bank.geom) as inter
"Bank_Name", "Lat"
from "IndiaState" INNER JOIN TN_Bank ON ST_Intersects("IndiaState".geom, TN_Bank.geom)
where "IndiaState".state='KERALA')x
它正在更新 Bank 表中的所有行。 請幫忙。
UPDATE TN_Bank dst
SET "State" = 'KERALA'
FROM "IndiaState" src
WHERE ST_Intersects(src.geom, dst.geom)
AND src.state = 'KERALA'
;
由於您沒有使用源表中的任何字段(並且不止一行可以滿足 intersects()),您可以將 src 表移動到 exists() 檢查:
UPDATE TN_Bank dst
SET "State" = 'KERALA'
WHERE EXISTS (
SELECT *
FROM "IndiaState" src
WHERE src.state = 'KERALA'
AND ST_Intersects(src.geom, dst.geom)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.