postgresql - 使用 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 做更新,我应该怎么做那个更新?
解决方案
在您的原始 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
推荐阅读
- java - 如何修复 camel-k 版本 1.0.0 中的 camel-k-kit 错误?
- algorithm - 是否有用于绘制力导向图的简单(-ish)算法?
- python - 如何使用 BeautifulSoup 和 Python 请求获取具有强标签的段落及其下面的三个段落?
- java - 白屏和崩溃 - Android Studio
- javascript - 如何隐藏客户端 api 密钥?
- excel - Excel“保存更改”弹出窗口上的模拟按钮取消
- haskell - 在 cabal 文件的库或可执行部分中建立依赖关系?
- grails - 在控制器中的后续命令对象上初始化命令对象时出错
- python - 自动(或循环)将某些文件按名称移动到子目录
- windows - 如果找到文件,则停止 get-Childitem