Я пытаюсь получить все записи из таблицы 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
, это сработает (почему, Боже?).
Может кто-нибудь сказать мне, почему это происходит, или показать мне, как делать то, что я хочу?