多个条件下的ORDER BY

rob*_*ino 7 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
Run Code Online (Sandbox Code Playgroud)

应返回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
Run Code Online (Sandbox Code Playgroud)

应该返回id 1,因为它是最老的

在我当前的查询中,我这样做:

SELECT * FROM table ORDER BY price, date DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个查询不起作用,我在上面概述了它.

谢谢你的帮助

Sim*_*tal 15

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

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
Run Code Online (Sandbox Code Playgroud)