Предложение Postgres RETURNING с соединением

В следующем 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 в рамках необходимости сделать отдельное обратное путешествие к БД.

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
;    
Другие вопросы по тегам