Maison > Article > développement back-end > 请问 如何从数据库随机取出一些数,并相加后大于等于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 "<br />"; } echo $Total;
你这不就是我说的
一条查询指令
一个内部有条件判断的 while 循环
吗?
至于那条指令,你在管理器中执行一下就知道是怎么回事了