【问题标题】:PostgreSQL: Inserting into one table then updating another using the same subquery, within the same single queryPostgreSQL:插入一个表,然后在同一个查询中使用相同的子查询更新另一个表
【发布时间】:2021-03-26 10:21:43
【问题描述】:

我有一个相当复杂的查询,我发现很难创建从FROM 中的同一子查询更新两个不同表的结果。我面临的困难表明我尝试了不正确的流程:

下面是我用于从子查询更新 table1 的脚本的一个极其简化的版本:

UPDATE 
  table1  
SET 
  columnX= subquery.column2
FROM 
  (
  SELECT column1, column2, column2
  FROM table2
) AS subquery
WHERE subquery.column1 = table1.column1;

现在我需要将第三个表 (table3) 加入组合并将 table2(子查询).column2 映射到 INSERT 上的值。 我不能使用第二个查询来做到这一点,这将是理想的,因为子查询会生成必须跨 table1.columnX 和 table3.column1 持续存在的 UUID。

我可以在子查询中包含INSERT,同时仍然返回同一个子查询表吗?

【问题讨论】:

  • 任何关于形成更好问题的建议将不胜感激。
  • 样本数据和期望的结果真的很有帮助。
  • @GordonLinoff 是的,抱歉,我对答案一无所知,我对这个问题并不直截了当。我会尽快更新”
  • 你在使用 uuid_ossp 吗?

标签: sql postgresql insert subquery insert-update


【解决方案1】:

INSERT...RETURNING uuid_column_name 可能是您在子查询中需要的魔法。

https://www.postgresql.org/docs/13/sql-insert.html

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 2018-06-20
    相关资源
    最近更新 更多