SQL(postgres)在INSERT INTO / UPDATE之后从多个表中返回数据

时间:2018-03-28 13:38:04

标签: sql postgresql join sql-update sql-insert

在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 *;

1 个答案:

答案 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语句中从另一个表中返回内容。