我在一个需要根据动态值获取记录的站点上工作。我的表结构是这样的:
Rule_price Rul_value
100 3 200 5 250 6
我的问题是,如果我的价值在100到200之间,那么它应该获取100(第一条记录,最小值),如果我的价值在200到250之间,那么它应该获取200,依此类推。
该值将与Rule_price
值匹配。如果不清楚,请问我。谢谢。
解决方案是计算价格与所有价格之间的距离,对它们进行排序并选择最小的正距离。
像这样:
SELECT rul_value, (rule_price - $price) as distance FROM my_table WHERE (rule_price - $price) < 0 ORDER BY distance DESC LIMIT 1
注意:此查询使用filesort
,这意味着如果此表中有很多行,它可能会变慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句