Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :comment sélectionner des lignes qui totalisent une certaine valeur

Vous pouvez utiliser une sous-requête corrélée pour obtenir le total cumulé et récupérer les lignes dont le total cumulé est int . si c'est un varchar la comparaison renverrait le mauvais résultat)

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

Modifier :lorsqu'il y a des valeurs en double dans la colonne de stockage, elles doivent être prises en compte dans la somme cumulée en incluant une condition pour le id colonne. (dans ce cas < condition a été utilisée, donc le plus petit identifiant pour une valeur de stockage en double est récupéré)

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