2017-01-23 115 views
-1

是多列排序是顺序排列类型或非顺序排列 ..?按多列排序应按顺序排列

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

两者结果是否相同事情或不同如果差异你能expalin我怎么..?

+3

是,列的顺序在ORDER BY子句中的问题。 – Serg

+1

从柜子里拿出一些杯子和盘子。按大小,形状和颜色排列它们。现在按颜色,形状和大小排列它们。他们是否在相同的顺序? – Strawberry

回答

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 
2

它们不同。它首先命令第一列的结果。然后在与第一列具有相同值的组内,按第二列进行排序。等等每列。

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

0

查询只需读取第一个条件ORDER BY:

SELECT * 
FROM table 
ORDER BY skill_id DESC, 
student_id ASC