相関サブクエリを使用して、現在の合計を取得し、現在の合計が指定された数未満の行を取得できます。 (ストレージ列を int
に変更したことに注意してください 。 varchar
の場合 比較すると間違った結果が返されます)
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
編集:ストレージ列に重複する値がある場合、 id
の条件を含めることにより、現在の合計でそれを考慮する必要があります。 桁。 (この場合は <
条件が使用されているため、重複するストレージ値の最小IDが取得されます)
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