mysql 小于多少行_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中有更好的(甚至牺牲性能)方式,我不介意.我只是觉得查询不会那么困难.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值