【发布时间】:2015-09-04 06:19:30
【问题描述】:
我有两张桌子:
"TABLE1"
"Id" integer,
"unit" varchar(255)
...
"TABLE2"
"Id" integer,
"Description" varchar(250)
...
TABLE1 是 TABLE2 的后代——用 Postgres 的说法,它“继承”自 TABLE2。
TABLE2 的行与TABLE1 中的每一行的“Id”匹配。它还有许多其他后代,TABLE2 中的行数比 TABLE1 中的多。
由于与此处无关的原因,我需要将 TABLE1."unit" 中的文本复制到 TABLE2."Description" 中,以获取 Id 列相同的所有行。
以下查询成功,但不更新任何行:
UPDATE ONLY public."TABLE2" as t2
SET ("Description") = (t1."unit"::regclass)
FROM "TABLE1" as t1
WHERE t1."Id" = t2."Id";
我尝试了不带ONLY 的查询,但由于“名称”错误而失败。
谁能告诉我我做错了什么?
【问题讨论】:
-
您混合了双引号标识符和不带引号的标识符,但这在 Postgres 中具有相关性。什么是
"name" error?请提供逐字错误消息。 Edit 您的问题是为"TABLE1"和"TABLE2"提供完整和逐字 表定义(您在psql 中使用@ 987654341@) 给我们一个战斗的机会。添加可能存在的任何触发器(以及使用的触发器函数)、规则或索引。并且总是你的 Postgres 版本。
标签: sql postgresql sql-update