【问题标题】:Dynamic Insert/update based on where clause in postgresql基于 postgresql 中 where 子句的动态插入/更新
【发布时间】:2020-06-05 19:55:28
【问题描述】:

我有两张表,如下图

ob_period

person_id     ob_start_date

  1            2007/02/11
  2            2008/05/13  
  3            2008/07/29
  4            2006/03/21

访问

person_id     visit_date

  1            2003/06/21
  2            2005/02/23  
  3            2006/04/19
  5            2004/06/11

我想用 visit_table 的“visit_date”更新“ob_period”表的“ob_start_date”

我正在尝试类似下面的更新,但它无法正常工作,因为我不确定如何使用另一个表中的动态值进行更新

update ob_period a
set a.ob_start_date = b.visit_date
where a.person_id = b.person_id

我希望我的输出如下所示

输出

person_id     visit_date

  1            2003/06/21
  2            2005/02/23  
  3            2006/04/19
  4            2006/03/21

你能帮我解决这个问题吗?

【问题讨论】:

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


    【解决方案1】:

    您需要对第二个表的表引用:

    update ob_period p
        set ob_start_date = v.visit_date
        from visit v
        where p.person_id = v.person_id
    

    【讨论】:

    • @TheGreat 。 . .请注意,我更改了表别名,因此它们是表的有意义的缩写,而不是任意字母。
    【解决方案2】:

    试试这个:

     update ob_period a
        set a.ob_start_date = b.visit_date
        from visit b
        where a.person_id = b.person_id
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多