sql >> Databasteknik >  >> RDS >> Mysql

SQL:Hur man väljer rader som summerar till ett visst värde

Du kan använda en korrelerad underfråga för att få den löpande summan och hämta de rader vars löpande summa är int . om det är en varchar jämförelsen skulle ge fel resultat)

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

Redigera:När det finns dubbletter av värden i lagringskolumnen måste det redovisas i den löpande summan genom att inkludera ett villkor för id kolumn. (i det här fallet < skick har använts, så det minsta ID:t för ett dubblettlagringsvärde hämtas)

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


  1. Hur man tar bort siffror från slutet av strängen med SQL

  2. Migrera Azure Database for MySQL/MariaDB till en lokal server

  3. Hur kan jag lagra "€"-symbolen i MySQL med PHP?

  4. Konvertera avgränsad sträng till rader i oracle