Предложение 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
;