sql >> Database >  >> RDS >> Mysql

SQL:rijen selecteren die een bepaalde waarde hebben

U kunt een gecorreleerde subquery gebruiken om het lopende totaal te krijgen en de rijen op te halen waarvan het lopende totaal int . als het een varchar . is de vergelijking zou het verkeerde resultaat opleveren)

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

Bewerken:wanneer er dubbele waarden in de opslagkolom staan, moet dit in de lopende som worden verantwoord door een voorwaarde op te nemen voor de id kolom. (in dit geval < voorwaarde is gebruikt, dus de kleinste id voor een dubbele opslagwaarde wordt opgehaald)

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. SQL rij-retourvolgorde

  2. SQLSTATE [22007]:Ongeldige datum/tijd-indeling:1292 Onjuiste datum/tijd-waarde:'2008-03-30 02:56:12'

  3. door komma's gescheiden lijst als een enkele tekenreeks, T-SQL

  4. Fout bij het laden van MySQLdb-module en pip MySQLdb installeren