Quasi ESATTO stessa domanda ha risposto qui . La premessa è che avresti bisogno di un'altra colonna che funga da totale parziale per il cliente in questione...
Ho creato una tabella e simulato i dati esattamente come i tuoi risultati e ho ottenuto i TUOI risultati esatti... Il problema era che in qualche modo MySQL applicava i criteri DUE VOLTE per riga e non capivo come o perché... Sospetto FORTEMENTE che sia un bug, ma non posso descriverlo Ad ogni modo, ho una correzione che forza un "PreQuery" interno come base e restituisce TUTTI i record da quello con @SQLVars e quindi applica una clausola WHERE da quello ...
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