[英]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
我需要的是
我特别留意第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.