请问 如何从数据库随机取出一些数,并相加后大于等于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 循环
吗?
至于那条指令,你在管理器中执行一下就知道是怎么回事了