簡體   English   中英

多個條件下的ORDER BY

[英]ORDER BY on multiple conditions

我需要一個查詢,它會給我的結果是(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

不幸的是,這個查詢不起作用,我在上面概述了它。

謝謝你的幫助

我無法准確確定您的身份,但聽起來您正在尋找最高價格的最老時間戳,因此以下內容應該足夠

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM