Maison  >  Article  >  développement back-end  >  请问 如何从数据库随机取出一些数,并相加后大于等于100?

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

WBOY
WBOYoriginal
2016-06-23 13:30:461306parcourir

请问 如何从数据库随机取出一些数字数据,并相加后大于等于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 "<br />";        }		echo $Total;


select * from tbl_name a where (select sum(field) from tbl_name where id>=a.id) > 100
如果可以的话,还请斑竹教下这个要怎么输出,谢谢。

你这不就是我说的
一条查询指令
一个内部有条件判断的 while 循环
吗?

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn