1
我有以下查詢,該變量效果很好,如果我不使用ORDER BY子句後自我更新:是否有可能使用一個變量計數器,一個ORDER BY
集@a:= 0 ;
SELECT doc, @a as before, movement as mov, (@a:[email protected]+movement) as after, date
FROM movements m
LEFT JOIN (
SELECT doc, 1 as tdoc, date
FROM invoices
UNION ALL
SELECT doc, 2 as tdoc, date
FROM nulled
) sub
ON m.doc=sub.doc and m.doc_type = sub.tdoc
WHERE m.product_id="XXXX"
,所以我得到這樣的:
DOC BEFORE MOVEMENT AFTER DATE
006 0 10 10 2012-07-01
008 10 -3 7 2012-07-03
015 7 5 12 2012-06-20
但我想的動作來按日期,所以我在查詢的末尾包含按日期進行排序和獲取:
DOC BEFORE MOVEMENT AFTER DATE
015 7 5 12 2012-06-20
006 0 10 10 2012-07-01
008 10 -3 7 2012-07-03
,而不是我想要的東西:
DOC BEFORE MOVEMENT AFTER DATE
015 0 5 5 2012-06-20
006 5 10 15 2012-07-01
008 15 -3 12 2012-07-03
有沒有辦法得到這個?正在計算變量,然後結果被排序。有沒有辦法強制結果先排序,然後計算變量?
如果MySQL最終到達21世紀並支持窗口函數,那將會容易得多。 – 2012-07-28 08:08:40