Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL:So wählen Sie Zeilen aus, die sich zu einem bestimmten Wert summieren

Sie können eine korrelierte Unterabfrage verwenden, um die laufende Summe abzurufen und die Zeilen abzurufen, deren laufende Summe int geändert habe . wenn es ein varchar ist der Vergleich würde ein falsches Ergebnis liefern)

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

SQL Fiddle

Bearbeiten:Wenn in der Speicherspalte doppelte Werte vorhanden sind, muss dies in der laufenden Summe berücksichtigt werden, indem eine Bedingung für die id eingefügt wird Säule. (in diesem Fall < Bedingung wurde verwendet, sodass die kleinste ID für einen doppelten Speicherwert abgeholt wird)

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