我正在學習MySQL聲明,ORDER BY
。我遇到了這個教程,他們展示了一個帶有兩個子句的例子。這怎麼可能?例如:MySQL ORDER BY兩個條款
SELECT * FROM table_name ORDER BY
score DESC, date ASC;
這怎麼可能必須由兩個子句命令?這對我沒有意義。你的結果如何訂購兩次?
我正在學習MySQL聲明,ORDER BY
。我遇到了這個教程,他們展示了一個帶有兩個子句的例子。這怎麼可能?例如:MySQL ORDER BY兩個條款
SELECT * FROM table_name ORDER BY
score DESC, date ASC;
這怎麼可能必須由兩個子句命令?這對我沒有意義。你的結果如何訂購兩次?
這個查詢做這樣的事情:
ORDER score descending
IF there are two rows with same score
ORDER date ascending
簡單地說,如果你有這個表
score date
1 11111
1 11113
2 11112
這將讓你的結果
score date
2 11112
1 11111
1 11113
首先它按分數排序,然後對任何具有相同分數的行按日期排序。
例如,這是由Score ASC, Date ASC
排序:
Score Date
1 2012/3/2
12 2012/3/1
46 2012/3/1
213 2012/3/1
213 2012/3/2
234 2012/3/1
234 2012/3/2
435 2012/3/1
435 2012/3/2
435 2012/3/2
SELECT...
FROM..
ORDER BY
score DESC, date ASC;
意味着它將首先命令由SCORE
(下降),然後通過date
(上升)如果你有這樣的記錄
:
A B
==========
10 100
10 200
20 300
40 500
通過ORDER BY A DESC, B ASC
A B
==========
40 500
20 300
10 100
10 200
正如你所看到的,有2條記錄10
和B
將順序ascending
這就是爲什麼你得到100 then 200
而不是200 then 100
。
爲什麼日期11113的分數ID會改變?另外,11113不是日期。 – 2012-03-21 14:30:52
我認爲他只顯示了一個基本示例:) – 2012-03-21 14:37:41
當然,但它不準確,因爲來自列分數和列日期的數據不再匹配 – 2012-03-21 14:45:11