在MySQL中有一個表包含ID,DAT,AMN,FLWC,FLWD,TYP。我想按DAT和ID排序表(DAT是排序中的第一個關鍵字),然後根據TYP更新先前記錄中的FLWC和FLWD。例如,如果0:此前的紀錄和1:當前記錄,則:在MySQL的UPDATE查詢期間將參數值設置爲
if typ1==d then (flwc1=flwc0 AND flwd1=flwd0+amn1)
if typ1==c then (flwc1=flwc0+amn AND flwd1=flwd0)
你可以看到,flwc和flwd將被設置爲下一個記錄,其中一人將是一筆AMN取決於TYP值。
改變之前表:更新後
-- id__dat__amn__flwc__flwd__typ
-- 1 10 100 0 0 d
-- 2 11 200 0 0 c
-- 3 12 300 0 0 d
-- 4 13 400 0 0 c
-- 5 14 500 0 0 d
-- 6 15 600 0 0 c
-- 7 16 700 0 0 d
表:
-- id__dat__amn__flwc__flwd__typ
-- 1 10 100 0 100 d
-- 2 11 200 200 100 c
-- 3 12 300 200 400 d
-- 4 13 400 600 400 c
-- 5 14 500 600 900 d
-- 6 15 600 1200 900 c
-- 7 16 700 1200 1600 d
我這樣做是在MS SQL服務器,但MySQL的似乎就是在這樣的情況下(設定值差更新查詢時參數),MS SQL Server中的解決方案:
declare @sumc decimal
declare @sumd decimal
set @sumc=0
set @sumd=0
update myTable set
@sumc+= case typ when 'c' then amn else 0 end, [email protected],
@sumd+= case typ when 'd' then amn else 0 end, [email protected]
我需要在MySQL中的上述查詢。謝謝
所以我需要至少一個臨時場(Incrementar)? – Hamid
你看看我的其他答案。 – Barto
但這個答案更好,我完成了我的工作。謝謝 – Hamid