我需要一个查询,它会给我的结果是(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
不幸的是,这个查询无法解决我上面的概述。
感谢您的帮助
答案 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)