Bijna EXACT dezelfde vraag hier beantwoord . Het uitgangspunt is dat u een andere kolom nodig heeft om als lopend totaal voor de klant in kwestie te fungeren...
Ik heb een tabel gemaakt en gegevens gesimuleerd precies zoals uw resultaten en kwam met UW exacte resultaten ... Het probleem was op de een of andere manier dat MySQL de criteria TWEEMAAL per rij toepast en niet begreep hoe of waarom ... Ik vermoed STERK dat het een bug is, maar kan het niet omschrijven. Hoe dan ook, ik heb WEL een oplossing die een innerlijke "PreQuery" als basis afdwingt, en ALLE records daarvan retourneert met de @SQLVars en dan een WHERE-clausule van daaruit toepassen...
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