[SQL ] update multiple-table 語法求教

看板Database (資料庫)作者 (汪汪)時間8年前 (2016/08/14 00:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
資料庫名稱: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), 來自: 111.241.224.25 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1471104576.A.A72.html
文章代碼(AID): #1NhqP0fo (Database)
文章代碼(AID): #1NhqP0fo (Database)