【发布时间】:2012-03-21 14:23:59
【问题描述】:
我正在学习 MySQL 语句 ORDER BY。我遇到了本教程,他们在其中展示了一个带有两个子句的示例。这怎么可能?例如:
SELECT * FROM table_name ORDER BY
score DESC, date ASC;
这怎么可能必须通过两个子句来排序?这对我来说没有意义。您的结果如何被订购两次?
【问题讨论】:
标签: mysql
我正在学习 MySQL 语句 ORDER BY。我遇到了本教程,他们在其中展示了一个带有两个子句的示例。这怎么可能?例如:
SELECT * FROM table_name ORDER BY
score DESC, date ASC;
这怎么可能必须通过两个子句来排序?这对我来说没有意义。您的结果如何被订购两次?
【问题讨论】:
标签: mysql
此查询将执行以下操作:
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
如您所见,10 和 B 有 2 条记录将按 ascending 排序,这就是为什么您会得到 100 then 200 而不是 200 then 100。
【讨论】: