zoukankan      html  css  js  c++  java
  • oracle update left join查询

    对于有的更新语句,要更新的表可能条件不够,需要用到left join关联其他表,

    但是不能直接关联,否则报错:错误如下:

    update  imim_gireqbillitems gi 
    left join imim_gireqbills g on g.guid=gi.guid
    set gi.quantity=
    (
        select sum(gi2.quantity)
        from imim_gireqbillitems gi2
        left join imim_gireqbills g2 on g2.guid=gi2.guid
        where g2.ismerge='0' and g2.mergeid=g.mergeid
    )
    where g.ismerge='1' and exists
    (
        select 1
        from imim_gireqbillitems gi2
        left join imim_gireqbills g2 on g2.guid=gi2.guid
        where g2.ismerge='0' and g2.mergeid=g.mergeid
    )

    正确实例:

    update 
    (
      select * from imim_gireqbillitems gi 
      left join imim_gireqbills g on g.guid=gi.guid
      where g.ismerge='1'
    ) T
    set T.quantity=
    (
        select sum(gi2.quantity)
        from imim_gireqbillitems gi2
        left join imim_gireqbills g2 on g2.guid=gi2.guid
        where g2.ismerge='0' and g2.mergeid=T.mergeid
    )
    where exists
    (
        select 1
        from imim_gireqbillitems gi2
        left join imim_gireqbills g2 on g2.guid=gi2.guid
        where g2.ismerge='0' and g2.mergeid=T.mergeid
    )
  • 相关阅读:
    C# 设计模式
    FutureTask、Fork/Join、 BlockingQueue
    线程的几种创建方式
    行锁、表锁、乐观锁、悲观锁
    J.U.C之AQS
    同步容器并发容器
    线程不安全类
    线程封闭
    不可变对象
    安全发布对象—单例模式
  • 原文地址:https://www.cnblogs.com/alsf/p/7827362.html
Copyright © 2011-2022 走看看