-1

我正在做一个项目,我看到了一个我无法理解的 sql 查询。

    UPDATE 
    table1 
    SET 
    field = TRUE
    FROM 
    table2
    WHERE
    table1.field2 = ... AND
    table2.field3 = ... AND

    ...

from 是否意味着加入?如果是这样,它与 join 语句的等效查询是什么?

4

1 回答 1

2

是的,它的工作原理SELECT ... FROM ...与允许您命名将连接到查询中的其他表相同。可以使用它UPDATE ... FROM ...是一个 postgresql 扩展,其他数据库不广泛支持。它允许您使用基于连接其他表计算的值来更新列。通常你可以通过使用 as sub-select 得到相同的结果,但这样写可能会更难。

Postgres 还支持andRETURNING子句,这进一步模糊了 and 之间的界限;它允许您从更新查询中获取值。这对于取回自动生成的主键 ID 等非常方便......UPDATEINSERTSELECT

我链接的 postgresql 文档页面中有一些示例。

于 2013-08-27T12:56:29.987 回答