Mysql 按多个条件订购
我需要一个查询,将给我的结果是(a)最高的价格或(b)与最早的时间戳之一。在所有情况下,价格都应该超过时间戳(即如果一条记录的时间戳比其他所有记录的价格都高,那么它应该总是返回价格最高的记录) 以下是一些场景:Mysql 按多个条件订购,mysql,Mysql,我需要一个查询,将给我的结果是(a)最高的价格或(b)与最早的时间戳之一。在所有情况下,价格都应该超过时间戳(即如果一条记录的时间戳比其他所有记录的价格都高,那么它应该总是返回价格最高的记录) 以下是一些场景: id | price | date 1 | 5 | 2012-02-20 08:59:06 2 | 5 | 2012-02-20 09:59:06 3 | 7 | 2012-02-20 10:59:06 应该返回id 3,因为它是最高价格 id | price | date 1 | 5
id | price | date
1 | 5 | 2012-02-20 08:59:06
2 | 5 | 2012-02-20 09:59:06
3 | 7 | 2012-02-20 10:59:06
应该返回id 3,因为它是最高价格
id | price | date
1 | 5 | 2012-02-20 08:59:06
2 | 5 | 2012-02-20 09:59:06
3 | 5 | 2012-02-20 10:59:06
应返回id 1,因为它是最旧的
在我当前的查询中,我正在执行以下操作:
SELECT * FROM table ORDER BY price, date DESC LIMIT 1
不幸的是,这个查询并不像我上面所描述的那样有效
谢谢你的帮助我很难准确地确定你想要的是什么,不过听起来你是在寻找最古老的时间戳和最高的价格,所以下面的内容就足够了
SELECT *
FROM table
ORDER BY
price DESC, // Favour the highest price
date ASC // Now get the one with oldest date at this price
LIMIT 1
我希望我能理解你的问题,试试这个
SELECT
p.*
FROM table p
WHERE price = (SELECT MAX(price) FROM table)
OR date = (SELECT MIN(date) FROM table)
您显示了两个相同的数据集,并请求不同的结果。您打算有两种不同的查询吗?如果没有,哪一个是正确的结果?我看不到您的数据集有任何差异,因此很难理解您试图实现的目标…:)为什么第二个示例应该返回id 1?你提到价格应该总是超过时间戳。尽管我对问题的解释不清楚,但这是有效的。谢谢