MySQL:将多个MAX()选择与数组相结合的最佳方法是什么?

时间:2012-03-13 20:42:59

标签: mysql arrays max

我希望有人能就这个问题给我一个大方向:

起点是db记录的id数组。

array ids = [45,23,14,7];

这些记录有一些列,即

id,price,rating
7,$5.00,5
14,$2.00,4
23,$5.00,2
45,$5.00,5

我需要的是

  1. 具有最高(价格)(或等价物)的物品。
  2. 如果有多个具有相同价格的商品,请获取具有最高(评级)(或等价物)的商品。
  3. 最后,如果还有多个项目,会选择数组中第一个项目。
  4. 我特别坚持第3点。有没有办法在(My)SQL中执行此操作,还是应该在代码中执行此操作?

    感谢您的阅读。

3 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

SELECT * FROM table WHERE id IN (45,23,14,7) ORDER BY price DESC, rating DESC LIMIT 1

答案 1 :(得分:1)

除了@jasonlfunk的回答之外,你还可以添加一个额外的order子句来考虑你的数组:

SELECT * FROM table WHERE id IN (45,23,14,7) ORDER BY price DESC, rating DESC, FIELD(id,45,23,14,7) ASC LIMIT 1

答案 2 :(得分:0)

...我想你的观点3 ..必须在代码中完成,mysql的结果不一定在订单或数组中返回结果,如果按价格应用订单,那么通过评级仍然返回多个item您的代码应该能够接收列表而不是单行,然后在代码中进行比较。