多列排序是顺序类型还是非顺序 ..?
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
如果两个结果是相同或不同的话,你能不能告诉我怎么样??
答案 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