Prawie DOKŁADNE odpowiedź na to samo pytanie . Założenie jest takie, że potrzebna jest kolejna kolumna, która będzie działać jako suma bieżąca dla danego klienta...
Stworzyłem tabelę i symulowane dane dokładnie tak, jak Twoje wyniki i uzyskałem TWOJE dokładne wyniki... Problem polegał na tym, że MySQL stosował kryteria DWUKROTNIE na wiersz i nie rozumiał, jak i dlaczego... MOCNO podejrzewam, że to błąd, ale nie potrafię tego opisać. W każdym razie, mam poprawkę, która wymusza wewnętrzne "PreQuery" jako podstawę i zwraca WSZYSTKIE rekordy z tego za pomocą @SQLVars, a następnie stosuje klauzulę WHERE z tego...
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