【问题标题】:SQL (postgres) RETURNING data from multiple tables after an INSERT INTO / UPDATESQL(postgres)在 INSERT INTO / UPDATE 之后从多个表返回数据
【发布时间】:2018-03-28 13:38:04
【问题描述】:

在 1) INSERT INTO 和 2) UPDATE 之后,postgres 是否可以从多个表中返回数据?

例如,假设以下人为示例:

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 更新为审查 52,但未达到预期结果:

UPDATE review SET fit_id = 2 WHERE review_id = 5 RETURNING *;

然而,想要的结果是:

id     | 5
fit_id | 2
body   | some copy
id     | 2
label  | some other label

【问题讨论】:

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


    【解决方案1】:
    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 语句中从另一个表返回内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多