MySQL ORDER BY两个子句

时间:2012-03-21 14:23:59

标签: mysql

我正在学习MySQL语句ORDER BY。我遇到了这个教程,他们展示了一个带有两个子句的例子。怎么可能?例如:

SELECT * FROM table_name ORDER BY 
score DESC, date ASC;

如何通过两个条款订购?这对我来说没有意义。您的结果如何排序两次?

3 个答案:

答案 0 :(得分:3)

此查询将执行以下操作:

   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

答案 1 :(得分:2)

首先按分数排序,然后对于任何具有相同分数的行,按日期排序。

例如,这是按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

答案 2 :(得分:0)

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

正如您所看到的,有10B的2条记录将按ascending排序,这就是您获得100 then 200而不是200 then 100的原因。