我有下表:
--------------
| id | value |
--------------
| 1 | 5 |
--------------
| 2 | 2 |
--------------
| 3 | 7 |
--------------
| 4 | 8 |
--------------
我想找到按id
排序的第一行,它将超过10的累加和。在这种情况下,它将是第3行,因为5 + 2 + 7大于10(对于value
列。)
我该怎么做?
答案 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;