返回总和小于给定值的行 [英] return rows where sum on a field less than a given value

查看:31
本文介绍了返回总和小于给定值的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对 MySQL 的了解是基本的.我想构建一个查询以按升序返回对给定值求和的所有行.我不知道我怎么能做到这一点.使用 sum() 只返回一行.我试过一个子查询,但它返回所有行.我不想让任何人做我的工作,我只想让你帮我解决这个问题.有人有想法吗?

My knowledge of MySQL is basic. I want to build a query to return all rows that sum a given value, in ascending order. I can't figure out how I can do that. Using sum() only returns one row. I've tried a subquery but it returns all rows. I don't want anybody do my work, I just want you to help me to figuring this out. Anybody have an idea?

如何检索其提交的值"总和为 30 的所有行示例:

How to retrieve all rows that its filed "value" sum 30 Example:

given value: 30
field to sum: value


table:
id name      value  order
1  name1     3      1
2  name2     10     6
3  name3     13     3
4  name4     5      8
5  name5     20     25

因此,查询必须返回:编号 1、编号 3、编号 2、编号 4

So, the query must return: id 1, id 3, id 2, id 4

提前致谢.

推荐答案

set @total:=0;
select id, name, value, `order`
from 
(select 
 id, name, value, `order`, 
 @total:=if(@total is null, 0, @total)+`order` as total
 from THE_TABLE
 order by `order`
) as derived 
where total<=30;

这篇关于返回总和小于给定值的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆