繁体   English   中英

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

[英]MySQL: Best way to combine multiple MAX() selects with an array?

我希望有人可以给我关于这个问题的一般指导:

起点是数据库记录的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. 具有max(price)(或等价物)的商品。
  2. 如果有多个相同价格的商品,请获得具有max(rating)(或同等价值)的商品。
  3. 最后,如果还有一个以上的项目,请采用数组中第一位的项目

我特别留意第3点。在(My)SQL中有没有办法做到这一点,还是应该在代码中做到这一点?

感谢您的阅读。

这样的事情应该起作用:

SELECT * FROM table WHERE id IN (45,23,14,7) ORDER BY price DESC, rating DESC LIMIT 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM