多个条件下的ORDER BY

时间:2012-02-20 20:10:12

标签: 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 | 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

不幸的是,这个查询无法解决我上面的概述。

感谢您的帮助

2 个答案:

答案 0 :(得分:14)

我无法准确确定您的目标,但听起来您正在寻找最高价格的最老时间戳,因此以下内容应该足够

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

答案 1 :(得分:0)

我希望我理解你的问题,试试这个

SELECT 
    p.*
FROM table p
WHERE price = (SELECT MAX(price) FROM table)
    OR date = (SELECT MIN(date) FROM table)