在postgres中是否可以在1)INSERT INTO和2)UPDATE之后从多个表返回数据?
例如,假设以下人为的例子:
review fit
------ ----
id id
fit_id label
body
1)如何插入评论表并返回与RETURNING子句中的评论数据相关联的相应拟合数据?
因此,SQL插入时没有完成所需的结果:
INSERT INTO review (id, fit_id, body) VALUES (5, 1, 'some copy') RETURNING *;
然而,期望的结果是:
id | 5
fit_id | 1
body | some copy
id | 1
label | some label
2)如何更新审核fit_id并返回与RETURNING子句中的审核数据相关联的新适合数据?
SQL将fit_id更新为审核2
的{{1}},但未完成所需的结果:
5
然而,期望的结果是:
UPDATE review SET fit_id = 2 WHERE review_id = 5 RETURNING *;
答案 0 :(得分:2)
WITH inserted AS (
INSERT INTO review VALUES (...) RETURNING *
)
SELECT inserted.*, fit.*
FROM inserted
INNER JOIN fit ON inserted.fit_id = fit.id
这将为您提供所需的输出。很确定你不能在UPDATE/INSERT ... RETURNING
语句中从另一个表中返回内容。