选择具有一定累积值MySQL的行

时间:2016-01-12 00:26:00

标签: mysql sql

我有下表:

--------------
| id | value |
--------------
| 1  | 5     |
--------------
| 2  | 2     |
--------------
| 3  | 7     |
--------------
| 4  | 8     |
--------------

我想找到按id排序的第一行,它将超过10的累加和。在这种情况下,它将是第3行,因为5 + 2 + 7大于10(对于value列。)

我该怎么做?

2 个答案:

答案 0 :(得分:2)

假设你总是按id列排序(如果没有,这不可能是无序的sql),那么这里有一个选项:

select *
from yourtable t
where exists (select 1 
              from yourtable t2
              where t2.id <= t.id
              having sum(value) > 10)
order by id
limit 1

答案 1 :(得分:0)

可能最快的方法是使用变量:

select t.*
from (select t.*, (@s := @s + value) as sumv
      from t cross join
           (select @s := 0)
      order by id
     ) t
where sumv - value <= 10 and sumv > 10;