【发布时间】:2016-06-21 18:50:26
【问题描述】:
我想先说我对 SQL 非常陌生,但我现在的工作需要我在其中工作。
我有一个包含地形点数据 (x,y,z) 的数据集。我正在尝试基于此数据构建 KNN 模型。对于每个点“P”,我在数据集中搜索最接近 P 的 100 个点(最近的意思是地理上最近的)。然后我平均这些点的值(这个平均值称为残差),并将这个值添加到“resid”列中的表中。
作为概念证明,我尝试简单地遍历表,并将每行中“resid”列的值设置为 1.0。
我的查询是这样的:
CREATE OR REPLACE FUNCTION LoopThroughTable() RETURNS VOID AS '
DECLARE row table%rowtype;
BEGIN
FOR row in SELECT * FROM table LOOP
SET row.resid = 1.0;
END LOOP;
END
' LANGUAGE 'plpgsql';
SELECT LoopThroughTable() as output;
这段代码执行成功并返回,但是当我检查表格时,没有进行任何更改。我的错误是什么?
【问题讨论】:
-
您必须执行
UPDATE查询才能更改表数据。 -
那么如果我在循环结束后执行 UPDATE 查询,是否会将更改提交到表中?
标签: sql postgresql postgis