How to update DB2 table with a join?

后端 未结 3 875
野的像风
野的像风 2021-01-16 13:59

I have two tables and I want to update by joining them. I am using DB2 V9.7.

ORDER_APPROVALS

ORDER_ID    CREATED_BY_ID   CREATED_BY         


        
相关标签:
3条回答
  • 2021-01-16 14:37

    I think you need to use a derived table to accomplish this:

    update order_attributes
    set value = (
      select
      created_by_name
      from(    
        select
        created_by_name,
        oa.order_id
        from
        order_approvals oa
        left outer join order_attributes ot
        on oa.order_id = ot.order_id
        AND OT.ATTRIBUTE_ID = 123 
        and OT.ORDER_ID in 
          (select ORDER_ID from ORDER_APPROVALS where PROCESS_DT is NULL)
        ) ORDERS
     WHERE orders.order_id = order_attributes.order_Id
        )
    
    0 讨论(0)
  • 2021-01-16 14:50

    You are looking for the MERGE statement:

    merge into ORDER_ATTRIBUTE ot
        using (select ORDER_ID, CREATED_BY_NAME
                 from ORDER_APPROVALS
                where PROCESS_DT is null) oa
        on
           (ot.ORDER_ID = oa.ORDER_ID)
        when matched 
         and ot.ATTRIBUTE_ID = 123
        then update set VALUE = oa.CREATED_BY_NAME;
    
    0 讨论(0)
  • 2021-01-16 14:54
    update ORDER_ATTRIBUTE OT set OT.VALUE = 
    (select CREATED_BY_NAME from ORDER_APPROVALS OA 
    where OA.ORDER_ID = OT.ORDER_ID and OA.PROCESS_DT is NULL) 
    where OT.ATTRIBUTE_ID = 123 
    

    With this it's enough.

    0 讨论(0)
提交回复
热议问题