【发布时间】:2021-10-25 23:51:48
【问题描述】:
我尝试使用 PostgreSQL 9.6 更新另一个表中的数据,按照文档和 stackoverflow 建议使用此查询
1. 这个查询是为了找到接近lokasi_esb.geom 的geom 的id_vertex。这个可以忽略,正常使用
CREATE TEMP TABLE temp1 AS
WITH kuery2 as(
SELECT id_esb, id_vertex, distant, rank() OVER (PARTITION BY id_esb ORDER BY distant asc) as ranked FROM table vertex)
select id_esb, id_vertex, distant, ranked
from kuery2
where ranked=1;
2. 这个查询用 id_vertex_nearest 列更新 lokasi_esb 表没有 excluded 表。 ////我已经知道这是错误的,我更新了数字 3
INSERT INTO lokasi_esb(id_esb, id_vertex_nearest)
select id_esb,id_vertex
from temp1
ON CONFLICT (id_esb) DO UPDATE
SET lokasi_esb.id_vertex_nearest = temp1.id_vertex;
我收到了这个错误
错误:缺少表 « temp1 » 的 FROM 子句条目
SQL 状态:42P01
字符:634
3. 此查询使用 id_vertex_nearest 列更新 lokasi_esb 表 with excluded 表
INSERT INTO lokasi_esb(id_esb, id_vertex_nearest)
select id_esb,id_vertex
from temp1
ON CONFLICT (id_esb) DO UPDATE
SET lokasi_esb.id_vertex_nearest = excluded.id_vertex;
得到这个错误(从印度尼西亚翻译)
错误:列 exclude.id_vertex 尚不存在
SQL 状态:42703
字符:634
那么谁能帮我弄清楚这里发生了什么?
【问题讨论】:
-
应该是
excluded.id_vertex_nearest,即要插入的字段。
标签: sql postgresql sql-update postgresql-9.5