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