小编典典

带连接的Postgres RETURNING子句

sql

在下面的SQL中,如何使该RETURNING子句联接到其他对象并返回联接的行?在这里,它只返回mytable更新后的行,但我希望它返回连接到另一个表中某行的行。

UPDATE mytable
SET    status = 'A' 
FROM  (
   SELECT myid
   FROM   mytable
   WHERE  status = 'B'
   ORDER BY mycolumn
   LIMIT  100
   FOR   UPDATE
   ) sub
WHERE  mytable.myid = sub.myid
RETURNING *;

我可以从客户端应用程序中进行另一个查询,但是我想知道是否有一种方法可以从Postgres中进行,而不必进行到数据库的单独往返。


阅读 217

收藏
2021-05-16

共1个答案

小编典典

FROM条款中的任何内容均适用于以下方面RETURNING

UPDATE mytable
SET status = 'A'
FROM
  (
    SELECT
      myid
    FROM mytable
    WHERE status = 'B'
    ORDER BY mycolumn
    LIMIT 100
    FOR UPDATE
  ) sub
  JOIN jointable j ON j.id = sub.myid
WHERE mytable.myid = sub.myid
RETURNING mytable.mycolumn, j.othercolumn
;
2021-05-16