mysql sum 函数使用问题? 400 报错
select a.id, b.id, c.id, a.amount+b.amount+c.amount as sum
from st a, st b, st c
where a.id<>b.id and b.id<>c.id and a.id<>c.id
and a.amount+b.amount+c.amount <800
and a.amount+b.amount+c.amount <800
有可能是我知识储备不够,我没想到一条SQL可以直接实现这个功能。不过我可以给你个解决的思路
a).使用碰撞法来查找记录集
定义一个存储过程,融合二分查找法的思想来实现具体逻辑。
先定义一个变量,代表从第条记录开始碰撞查找,默认可以为10或你认为合适的一个值。循环碰撞,先sum前10条记录,看看是否符合我的目标。
若大于我的目标,10/2再次查找;若小于我的目标,10*2再次查找,或10+10再次查找。
另外记录每次查找的条目数,若本次结果大于目标值,并且本次条目数与我记录的上次记录数相比较只差1,则结束循环。具体逻辑在实现时再微调。
b).增加一个当前记录合计值字段,每次需要计算时,循环处理每条记录,第1条的这个字段值为本身的amount,第2条的值为第1条amount+第2条amount,一直到这个值大于你的目标,然后通过这个字段过滤即可。如果排序方法固定,甚至每次插入或更新的时候,直接操作一下对应的记录都可以
######谢谢你的思路版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。