我有以下数据
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
我正在尝试获取特定 user_id 的所有最近行(按 DATE desc 排序
),直到 days
列的总和大于 X
。例如,在这种情况下,如果 X=7,我将获得 SUM(days)=24 的前三行。
最佳答案
试试这个。在这里,您将使用一个局部变量来计算子查询中的总和。
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.
关于获取所有行直到 SUM(列)大于 X 的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445333/