Re: [SQL ] update multiple-table 語法求教

看板Database作者 (J.J.)時間7年前 (2016/08/14 00:40), 7年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/5 (看更多)
UPDATE `pb1` JOIN `pb1` AS `pb2` ON pb1.pbin=pb2.pbin && pb2.pbon<>'' SET pb1.opi=pb1.opi+pb2.opi , pb1.oyd=pb1.oyd+pb2.oyd , pb1.okg=pb1.okg+pb2.okg WHERE pb1.pbon=''; ※ 引述《jonce007 (汪汪)》之銘言: : 資料庫名稱:mysql : 資料庫版本:5.x : 內容/問題描述: : Hi all, : 新手求教sql語法 : 資料庫內有一個表格,同時有進出的資料, : 以下用進貨單號pbin='02041008'為例 : 沒有退貨號(pbon=''),就是當初的進貨,(即下面的第1筆) : 退貨者必定會有指定當初的進貨單號(即下面的第2-4筆) : mysql> select pbin,pbon,ipi,iyd,ikg,opi,oyd,okg from pb1 : -> where pbin='020417008' : -> ; : +-----------+-----------+------+------+------+------+------+------+ : | pbin | pbon | ipi | iyd | ikg | opi | oyd | okg | : +-----------+-----------+------+------+------+------+------+------+ : | 020417008 | | 51.0 | 6810 | 0.00 | 0.0 | 0 | 0.00 | : | 020417008 | 020502009 | 0.0 | 0 | 0.00 | 12.0 | 1601 | 0.00 | : | 020417008 | 020518001 | 0.0 | 0 | 0.00 | 11.0 | 1401 | 0.00 | : | 020417008 | 020611001 | 0.0 | 0 | 0.00 | 28.0 | 3808 | 0.00 | : +-----------+-----------+------+------+------+------+------+------+ : 目標是將所有的退貨總數(2-4筆),更新到原進貨那筆的opi,oyd,okg上。 : 目前想出來的簡單辦法是用交易: : begin; : select @pi:=sum(opi) , @yd:=sum(oyd), @kg:=sum(okg) from pb1 : where pbin='020417008' and pbon<>''; : update pb1 : set opi=@pi, oyd=@yd, okg=@kg : where pbin='020417008' and pbon=''; : end; : 執行結果也正確無誤。 : --------------------------------------------------------------------------- : 但只能更新一筆單號, : 想把這兩行併成一行練習(update join? update multi-tables?), : update pb1 a, (select pbin, sum(opi) pi , sum(oyd) yd, sum(okg) kg from pb1 : where pbin='020417008' and pbon<>'') t : set a.opi=t.pi, a.oyd=t.yd, a.okg=t.kg : where a.pbin='020417008' and a.pbon=''; : --------------------------------------------------------------------------- : 但結果卻是: : Query OK, 0 rows affected (0.00 sec) : Rows matched: 1 Changed: 0 Warnings: 0 : 請大家幫我看看那裡寫錯了? : 改回 @pi=sum(opi)..... 也一樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.72.102 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1471106420.A.F4E.html ※ 編輯: JeremyJoung (118.163.72.102), 08/14/2016 00:43:15 ※ 編輯: JeremyJoung (118.163.72.102), 08/14/2016 00:45:07

08/15 12:44, , 1F
長知識
08/15 12:44, 1F

08/15 12:44, , 2F
推錯篇QQ
08/15 12:44, 2F
文章代碼(AID): #1NhqrqzE (Database)
討論串 (同標題文章)
文章代碼(AID): #1NhqrqzE (Database)