mysql表中查找和小于某个数的所有最前面的记录 10
例表如下,要查找记录中Name为A,且Value的和小于X的所有最前面的记录。IdNameValue1A202A253B124A185B176A33比如,X=50,那就应...
例表如下,要查找记录中Name为A,且Value的和小于X的所有最前面的记录。
Id Name Value
1 A 20
2 A 25
3 B 12
4 A 18
5 B 17
6 A 33
比如,X=50,那就应该找出记录1和2;X=65,那就应该找出记录1、2、4。
有没有快速的方法呢?还是只能遍历?因为数据很多,几十万条...
谢谢!~ 展开
Id Name Value
1 A 20
2 A 25
3 B 12
4 A 18
5 B 17
6 A 33
比如,X=50,那就应该找出记录1和2;X=65,那就应该找出记录1、2、4。
有没有快速的方法呢?还是只能遍历?因为数据很多,几十万条...
谢谢!~ 展开
展开全部
我想到一个方法
比如要检索小于100的所有A
step1:将所有A检索出来,并以ID升序,作为表tbl1
step2:通过tbl1,算出没个A的value与前面所有A的value和,作为一个新字段allValue,表tbl2
例:select id,name,value,(select sum(t2.value) from tb1 t2 where t2.id <= t1.id) allValue from tb1 t1
step3:tbl2中allValue小于100的所有数据,应该就是你想要的了
希望能帮到你
比如要检索小于100的所有A
step1:将所有A检索出来,并以ID升序,作为表tbl1
step2:通过tbl1,算出没个A的value与前面所有A的value和,作为一个新字段allValue,表tbl2
例:select id,name,value,(select sum(t2.value) from tb1 t2 where t2.id <= t1.id) allValue from tb1 t1
step3:tbl2中allValue小于100的所有数据,应该就是你想要的了
希望能帮到你
追问
谢谢啊 。但step2每条记录都要经历一次查询来计算allvalue,担心记录太多 会很慢。没有快捷的方式的话,就只能这样了。感谢
追答
我也只想到这个办法,技术有限。
我觉得如果允许,可以建个视图,存储过程
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询