我正在开发一个项目,我看到了一个我无法理解的SQL查询。
UPDATE
table1
SET
field = TRUE
FROM
table2
WHERE
table1.field2 = ... AND
table2.field3 = ... AND
...
是否意味着加入?如果是这样,它与join语句的等效查询是什么?
答案 0 :(得分:2)
是的,它与SELECT ... FROM ...
的工作方式相同,并允许您命名将加入查询的其他表。将其用于UPDATE ... FROM ...
是postgresql扩展,不受其他数据库的广泛支持。它允许您使用基于连接到其他表计算的值来更新列。通常使用sub-select可以获得相同的结果,但是用这种方式编写可能会更难。
Postgres还支持RETURNING
和UPDATE
的{{1}}条款,这进一步模糊了INSERT
之间的界限。它允许您从更新查询中获取值。这对于获取自动生成的主键ID等非常方便......
我链接的postgresql文档页面中有一些例子。