首页 > 解决方案 > 使用 JOINS 在 postgresql 中更新

问题描述

我有一个表单,其中一些输入具有使用此查询生成的值:

SELECT e.tree.nombre
FROM d.p
JOIN e.theme ON id = id_capa
LEFT JOIN e.tree ON e.theme.id_tree = e.tree.id
WHERE id_capa = 816

e并且d是模式。被id_capa = 816作为参数传递给我正在编辑的表单中的查询。它正确地返回一个值。现在我想在我的表单上编辑那个值,所以我需要更新,但我有多个表,我读到我不能用 JOINS 做更新,我应该怎么做那个更新?

标签: postgresql

解决方案


在您的原始 SQL 查询中,d.p未使用该表,无论是在条件中SELECT还是在条件中。所以可以跳过;查询可以重写为:

SELECT e.tree.nombre
FROM e.theme
  LEFT JOIN e.tree ON e.theme.id_tree = e.tree.id
WHERE e.theme.id = 816

由于查询从与 连接的表中选择值LEFT JOIN,因此结果可能是NULL,即e.tree可能会丢失表中的连接记录。在这种情况下,没有什么可更新的。

可以使用查询更新现有匹配记录:

UPDATE e.tree
SET nombre = <NEW_VALUE>
FROM e.theme
WHERE e.theme.id = 816 AND e.theme.id_tree = e.tree.id

推荐阅读