對於有的更新語句,要更新的表可能條件不夠,須要用到left join關聯其餘表,ui
可是不能直接關聯,不然報錯:錯誤以下:spa
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 )
正確實例:code
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 )