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 の条件を含めることにより、現在の合計でそれを考慮する必要があります。 桁。 (この場合は < 条件が使用されているため、重複するストレージ値の最小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. PostgreSQLでサポートされているタイムゾーンのリストを返す

    2. MySQL LEAST()関数–引数のリストから最小の引数を検索します

    3. mysql-列が多すぎますか?

    4. SQL Serverで特定の文字の後に文字列を分割し、この値を特定の列に更新する方法