Почти ТОЧНО на същия въпрос е отговорено тук . Предпоставката е, че ще ви е необходима друга колона, която да действа като текуща сума за въпросния клиент...
Създадох таблица и симулирах данни точно като вашите резултати и излязох с ВАШИТЕ точни резултати... Проблемът беше някак си MySQL прилагаше критериите ДВА пъти на ред и не разбираше как и защо... СИЛНО подозирам, че е грешка, но не мога да го опиша. Както и да е, имам корекция, която принуждава вътрешна "PreQuery" като основа и връща ВСИЧКИ записи от това с @SQLVars и след това прилагам клауза WHERE от това...
select properSummed.*
from
( select
o.orderid,
o.price,
@RunningTotal := @RunningTotal + o.price as UnpaidSoFar
from
orders o,
(select @RunningTotal := 0 ) sqlvars
where o.ownerid = 1
and o.paymentstatus = 'unpaid' ) properSummed
where
properSummed.UnpaidSoFar <= 50