【问题标题】:Update with inner join Postgresql使用内部连接更新 Postgresql
【发布时间】:2017-05-22 17:35:08
【问题描述】:

因为执行此更新不适用于 where 子句?更新对我来说都是如此。

UPDATE ventas SET eav_id = 7 
FROM ventas AS A
inner join ventasDetalle AS e on A.act_id = e.act_id and e.exp_id = A.exp_id
where a.eav_id = 1

【问题讨论】:

    标签: postgresql postgresql-9.4


    【解决方案1】:
    update ventas a
    set eav_id = 7 
    from ventasDetalle e
    where a.eav_id = 1 and (a.act_id, a.exp_id) = (e.act_id, e.exp_id)
    

    【讨论】:

      【解决方案2】:

      Postgresql UPDATE 语法是:

      [ WITH [ RECURSIVE ] with_query [, ...] ]
      UPDATE [ ONLY ] table [ [ AS ] alias ]
          SET { column = { expression | DEFAULT } |
                ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
          [ FROM from_list ]
          [ WHERE condition | WHERE CURRENT OF cursor_name ]
          [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
      

      所以我想你想要:

      UPDATE ventas AS A 
      SET eav_id = 7
      FROM ventasDetalle AS e
      WHERE (A.act_id = e.act_id and e.exp_id = A.exp_id)
      

      【讨论】:

        猜你喜欢
        • 2014-12-24
        • 1970-01-01
        • 2020-11-29
        • 2019-06-25
        • 1970-01-01
        • 2012-07-30
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多