U kunt een gecorreleerde subquery gebruiken om het lopende totaal te krijgen en de rijen op te halen waarvan het lopende totaal varchar
. is de vergelijking zou het verkeerde resultaat opleveren)
select id,user_id,storage
from uploads t
where storage+coalesce((select sum(storage) from uploads
where storage<t.storage),0) < 410000
order by storage
Bewerken:wanneer er dubbele waarden in de opslagkolom staan, moet dit in de lopende som worden verantwoord door een voorwaarde op te nemen voor de id
kolom. (in dit geval <
voorwaarde is gebruikt, dus de kleinste id voor een dubbele opslagwaarde wordt opgehaald)
select id,user_id,storage
from uploads t
where storage+coalesce((select sum(storage) from uploads
where storage<t.storage
or (storage=t.storage and id < t.id)),0) < 410000
order by storage