获取所有行的MySQL查询UNTIL(列)大于X.

Noa*_*oam 1 mysql sql

我有以下数据

user_id   days   date
88        2      2013-08-25
88        4      2013-08-23
88        18     2013-08-5
88        1      2013-08-4
88        2      2013-08-2
73        11     2013-08-2
299       4      2013-08-2
12        983    2013-08-2
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取order by DATE desc特定user_id的所有最近的行(),直到days列的SUM 大于X.例如,在这种情况下,如果X = 7,我将获得SUM(天)= 24的三个第一行.

nl-*_*l-x 5

试试这个.在这里,您将使用一个局部变量来计算子查询中的总和.

select
    user_id,
    days,
    date
from
    (
    select
        user_id,
        days,
        date,
        @sum_days := @sum_days + days as sum_days
    from
        myTable
    order by
        date desc
    ) t
    cross join (select @sum_days := 0) const -- resetting your @sum_days var.
where
    sum_days < X -- fill a number in for X here.
Run Code Online (Sandbox Code Playgroud)