Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:Как да изберете редове, които сумират до определена стойност

Можете да използвате корелирана подзаявка, за да получите текущата сума и да извлечете онези редове, чиято текуща обща сума е <определено число. (обърнете внимание, че промених колоната за съхранение на 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

SQL Fiddle

Редактиране:Когато има дублиращи се стойности в колоната за съхранение, тя трябва да бъде отчетена в текущата сума, като се включи условие за 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Външен ключ на MySQL ON DELETE CASCADE в 3 таблици

  2. Laravel не може да изтрие или актуализира родителски ред:ограничение на външния ключ е неуспешно

  3. Как да използвам външен ключ при запитване от две таблици

  4. PHP &MySQL Как да се показват категории всякакви подкатегории от базата данни

  5. Грешка #2101:Низът, предаден на URLVariables.decode(), трябва да бъде кодиран с URL