cra*_*tin 6 sql postgresql join sql-update sql-insert
在postgres中是否可能在1)INSERT INTO和2)UPDATE之后从多个表返回数据?
例如,假设以下人为的示例:
review fit
------ ----
id id
fit_id label
body
Run Code Online (Sandbox Code Playgroud)
1)如何插入检查表并在RETURNING子句中返回与检查数据结合的各个拟合数据?
因此,要插入的SQL没有完成所需的结果:
INSERT INTO review (id, fit_id, body) VALUES (5, 1, 'some copy') RETURNING *;
Run Code Online (Sandbox Code Playgroud)
但是,所需的结果是:
id | 5
fit_id | 1
body | some copy
id | 1
label | some label
Run Code Online (Sandbox Code Playgroud)
2)如何更新评论fit_id并在RETURNING子句中返回与评论数据结合的新拟合数据?
SQL将fit_id更新2为审阅5而未完成所需结果:
UPDATE review SET fit_id = 2 WHERE review_id = 5 RETURNING *;
Run Code Online (Sandbox Code Playgroud)
但是,所需的结果是:
id | 5
fit_id | 2
body | some copy
id | 2
label | some other label
Run Code Online (Sandbox Code Playgroud)
WITH inserted AS (
INSERT INTO review VALUES (...) RETURNING *
)
SELECT inserted.*, fit.*
FROM inserted
INNER JOIN fit ON inserted.fit_id = fit.id
Run Code Online (Sandbox Code Playgroud)
这将为您提供所需的输出。相当确定您不能从UPDATE/INSERT ... RETURNING语句中的另一个表返回内容。
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |