php – MySQL选择3个随机行,其中三行的总和小于值
发布时间:2020-12-13 13:35:45 所属栏目:PHP教程 来源:网络整理
导读:我试图从表中选择三个随机行,其中组合的item_price列小于所需的量. 想象一下,你有一个 input一美元金额.输入美元金额时,数据库会返回三个随机项,其中组合价格小于或等于您输入的金额. 如果我输入300美元,你可以购买这三件商品,150美元,100美元和50美元.我在
我试图从表中选择三个随机行,其中组合的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 您可以选择按最小总和进行过滤 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |