php随机取4个数和为100,请问 如何从数据库随机取出一些数,并相加后大于等于100?...

请问 如何从数据库随机取出一些数字数据,并相加后大于等于100?

回复讨论(解决方案)

发现问题好像有点矛盾,换个问法

要从数据库中取出一些数字,这些数字相加的结果要大于或等于100,不限制取出的数量,

举例:可以取出50,50这两个数字,相加等于100;

也可以取出10 , 20 , 20 , 50这四个数字,相加也等于100;

也可以取出10.5 , 20.5 , 30 ,20 , 26 ,这些数字,相加大于100;

或者取出其他相加后可以等于或大于100的数字。

取出的数字是随机的,不管有多少个数字,只要能够等于或大于100就可以

但是,但是一旦等于或大于100,就停止取出,并把已经取出的数字输出到页面上

给你个思路。

第一次,直接取出 100 条。

然后一条一条判断相加是否大于100,如果大于直接跳出。

这种的,只访问一次数据库,节省时间。

只访问一次数据库,节省时间。

不知道哪位师兄有没有更好的办法

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > 100

要求必须有升序的 id 字段辅助

不知道这样做有什么意义

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > 100

要求必须有升序的 id 字段辅助

不知道这样做有什么意义

产品太多了,没办法手工去各种组合计算。为了在各种随机组合的前提下,得到成本、卖价、利润,以便做到心中有数,好做促销活动吗,可是想不到简单有效的方法,我想这种可能会暂用不少服务器资源,所以来请教有没有什么可以提高效率的好办法,还请各位师兄各抒己见哦。

你先把你所谓的低效方法做好!

你先把你所谓的低效方法做好!

哦,我是说,我想的办法可能会占用不少服务器资源,没表达清楚,冒犯了。

现有所谓低效的代码,但能解决问题

然后才可能优化成高效的代码

你都不能准确的说出你要做什么,要经过什么途径去实现,怎么可能会有什么高效的代码

要从数据库中取出一些数字,这些数字相加的结果要大于或等于100,不限制取出的数量,

举例:可以取出50,50这两个数字,相加等于100;

也可以取出10 , 20 , 20 , 50这四个数字,相加也等于100;

也可以取出10.5 , 20.5 , 30 ,20 , 26 ,这些数字,相加大于100;

或者取出其他相加后可以等于或大于100的数字。

取出的数字是随机的,不管有多少个数字,只要能够等于或大于100就可以,但是,一旦等于或大于100,就停止取出,并把已经取出的数据输出到页面上。越简单的办法越好。

这就是我想要请教的。

这种事情本身就不是可由数据库自身完成的

你需要结合程序逐条读取才行

一条查询指令

一个内部有条件判断的 while 循环

我不知道你还要怎么简单

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > 100

要求必须有升序的 id 字段辅助

请问这个要怎么输出

这种事情本身就不是可由数据库自身完成的

你需要结合程序逐条读取才行

一条查询指令

一个内部有条件判断的 while 循环

我不知道你还要怎么简单

我搞定了,虽然斑竹的代码没有直接拿来用(没用过这种写法,搞不明白怎么输出,),不过从中想到一个比我之前写的更简单的,原来我之前的写法太绕了。,以下是代码

$rm=mysql_query("SELECT * FROM `pql_spices` ORDER by rand()");while ($rmx=mysql_fetch_array($rm)) { $Total+=$rmx['Price']; if ($Total>=100)break; echo $rmx['id']."、".$rmx['title']; echo "

"; }echo $Total;

select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > 100

如果可以的话,还请斑竹教下这个要怎么输出,谢谢。

你这不就是我说的

一条查询指令

一个内部有条件判断的 while 循环

吗?

至于那条指令,你在管理器中执行一下就知道是怎么回事了

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值