【发布时间】:2021-06-02 03:34:55
【问题描述】:
我不知道我的查询出了什么问题
UPDATE "Drawings" d SET
d."IsMostRecent" = TRUE
FROM (
select distinct on (a."Code") a."Code", r."Id", a."DrawnAt"
FROM (
SELECT r2."Code" as "Code", max(r2."DrawnAt") as "DrawnAt"
FROM "Drawings" r2
GROUP BY r2."Code"
) a
INNER JOIN "Drawings" r
ON r."Code" = a."Code" AND r."DrawnAt" = a."DrawnAt"
order by a."Code", r."Id" desc
) AS d2
WHERE
d."Id" = d2."Id"
抛出的错误:SQL 错误 [42703]:错误:关系“图纸”的“d”列不存在 位置:27
【问题讨论】:
-
而不是
d."IsMostRecent"=true使用"IsMostRecent" = TRUE。另外强烈建议使用小写字母作为标识符,否则会造成很大的问题 -
@AkhileshMishra 不错。现在效果很好
-
来自手册:不要在目标列的规范中包含表的名称——例如,UPDATE table_name SET table_name.col = 1 是无效的。 postgresql.org/docs/current/sql-update.html
标签: postgresql