sql >> Database teknologi >  >> RDS >> Mysql

SQL:Sådan vælger du rækker, der summerer til en bestemt værdi

Du kan bruge en korreleret underforespørgsel til at få den løbende total og hente de rækker, hvis løbende total er int . hvis det er en varchar sammenligningen ville returnere det forkerte 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

Rediger:Når der er duplikerede værdier i lagerkolonnen, skal det medregnes i den løbende sum ved at inkludere en betingelse for id kolonne. (i dette tilfælde < condition er blevet brugt, så det mindste id for en dublet lagerværdi bliver samlet op)

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. Hvordan kan jeg modtage en e-mail, når min MySQL-tabel er opdateret?

  2. Slip af fra en kolonne duplikatværdier i to kolonnevalg

  3. C-program mysql-forbindelse

  4. Sådan rettes ERROR 1130 (HY000):Host har ikke tilladelse til at oprette forbindelse til denne MySQL-server