php – MySQL选择3个随机行,其中三行的总和小于值

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – MySQL选择3个随机行,其中三行的总和小于值脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从表中选择三个随机行,其中组合的ITem_PRice列小于所需的量.

想象一下,你有一个< input>一美元金额.输入美元金额时,数据库会返回三个随机项,其中组合价格小于或等于您输入的金额.

如果我输入300美元,你可以购买这三件商品,150美元,100美元和50美元.我在创建一个将返回符合此条件的三个项目的查询时遇到困难.

SELECT t1.item_id,t1.item_price
From items t1
INNER JOIN items t2 ON ( t1.item_id = t2.item_id )
group by t1.item_id,t1.item_name,t1.item_price
HAVING SUM( t2.item_price ) <=300
ORDER BY RAND( )
LIMIT 3

我认为这会奏效,但我认为这只是一个巧合.它似乎只返回价格低于300美元,而不是总价不到300美元的任何三件物品.

我也试过这个查询

SELECT t1.item_id,t1.item_price
From   items t1
JOIN   items t2 ON t2.item_id <= t1.item_id
WHERE  t2.item_price <= 500
GROUP  BY t1.item_id
HAVING SUM(t2.item_price) <= 500
ORDER  BY RAND()
LIMIT 3

再次,似乎最初工作,但后来它开始返回2000美元的项目.

如果在PHP中有更好的(甚至牺牲性能)方式,我不介意.我只是觉得查询不会那么困难.

一如既往,感谢任何人的帮助.

这是另一个解决方案:
SELECT t1.item_id as id1,t2.item_id as id2,t3.item_id as i3
FROM items t1,items t2,items t3
WHERE
t1.item_id <> t2.item_id and
t1.item_id <> t3.item_id and
t2.item_id <> t3.item_id and
(t1.item_price + t2.item_price + t3.item_price) <= 300
order by rand()
limit 1

您可以选择按最小总和进行过滤

脚本宝典总结

以上是脚本宝典为你收集整理的php – MySQL选择3个随机行,其中三行的总和小于值全部内容,希望文章能够帮你解决php – MySQL选择3个随机行,其中三行的总和小于值所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。