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