我正试着从 storage_movements
直到 weight
列总和达到特定值。这是我要做的查询:
SELECT id, storage_id, weight, (@total := weight + @total) as c_sum
FROM `storage_movements`
JOIN (SELECT @total := 0) r
WHERE @total < 100000
AND weight > 0
AND storage_id=4
AND id < 1000
ORDER BY id DESC
它不起作用。它继续增加 @total
不尊重 WHERE
条款( @total
超过 100000
直到所有记录完成)。
如果我做些改变,奇怪的事情就会发生。比如:
如果我移除 AND id < 1000
行,它像预期的那样工作(但我需要这行)。
如果我移除 ORDER BY id DESC
线,也工作(但我也需要这条线)。
如果我移除 AND storage_id=4
,它工作(但我也需要这条线)。
如果我改变 AND storage_id=4
至 AND storage_id < 4
,它工作(为什么,上帝?)。
有人能告诉我为什么会这样,或者告诉我怎么做吗?
1条答案
按热度按时间kmbjn2e31#
在较新版本的mysql中,您需要首先排序:
我对使用
@total
在WHERE
. 我想我会选择: