按列排序应该是顺序

时间:2017-01-23 08:06:44

标签: mysql sql sql-order-by

多列排序是顺序类型还是非顺序 ..?

skill_id   student_id 
   1          23
   2          24
   5          26
   3          20
   7          29

我想问你的是我试图通过2列来命令它们就像

order by skill_id DESC,
student_id ASC

第一查询我写的如上所述

第二次查询中,我写了order by student_id ASC,skill_id DESC

如果两个结果是相同或不同的话,你能不能告诉我怎么样??

3 个答案:

答案 0 :(得分:4)

结果不同。 列的顺序在order by子句中是至关重要的。 在您的具体示例中,第二列实际上没有任何意义,只有第一列,因为示例数据中的任何列都没有重复值。

SELECT *
FROM table
order by skill_id DESC,
student_id ASC


skill_id    student_id
7           29
5           26
3           20
2           24
1           23

SELECT *
FROM table 
order by student_id ASC, skill_id DESC

skill_id    student_id
3           20
1           23
2           24
5           26
7           29

如果一列中存在重复值,则订单中的第二列将控制如何订购第二列。
以下是具有不同样本数据的相同查询:

SELECT *
FROM @T 
order by skill_id DESC,
student_id ASC


skill_id    student_id
7           9
7           29
5           6
5           26
3           0
3           20
2           2
2           24
1           3
1           23

SELECT *
FROM @T 
order by student_id ASC, skill_id DESC


skill_id    student_id
3           0
2           2
1           3
5           6
7           9
3           20
1           23
2           24
5           26
7           29

答案 1 :(得分:2)

他们是不同的。它首先按第一列排序结果。然后在具有相同第一列值的组中,它按第二列排序。等等每列。

如果您没有第一列的任何重复项,ORDER BY中的其余列将被忽略。

答案 2 :(得分:0)

查询只是读取ORDER BY中的第一个条件:

SELECT *
FROM table
ORDER BY skill_id DESC,
student_id ASC