在PostgreSQL中使用JOINS进行更新

时间:2018-10-26 19:35:10

标签: 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

ed是模式。 id_capa = 816作为参数从我正在编辑的表单传递给查询。它正确返回一个值。现在,我想在表单上编辑该值,所以我需要更新,但是我有多个表,我读到我无法使用JOINS进行更新,我该如何执行该更新?

1 个答案:

答案 0 :(得分:1)

在原始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