Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按多列排序应在序列中_Mysql_Sql_Sql Order By - Fatal编程技术网

Mysql 按多列排序应在序列中

Mysql 按多列排序应在序列中,mysql,sql,sql-order-by,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 在1st查询中,我写了如上所述的内容 在2nd查询中,我像order by student\u id ASC,skill\u

多列排序是顺序型还是非顺序型

skill_id   student_id 
   1          23
   2          24
   5          26
   3          20
   7          29
我想问你的是,我正试着按2列排序,它们是这样的

order by skill_id DESC,
student_id ASC
1st查询中,我写了如上所述的内容

2nd查询中,我像
order by student\u id ASC,skill\u id DESC


这两个结果是相同的还是不同的?如果有差异,你能告诉我怎么做吗?

它们是不同的。它首先按第一列对结果进行排序。然后在与第一列值相同的组中,按第二列排序。对于每一列,依此类推

如果没有第一列的任何副本,则会忽略排序依据中的剩余列。

结果不同。 在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
如果一列中存在重复值,则order by中的第二列将控制如何对第二列进行排序。
以下是使用不同样本数据的相同查询:

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

查询只需按以下顺序读取第一个条件:

SELECT *
FROM table
ORDER BY skill_id DESC,
student_id ASC

是的,按顺序排列的列的顺序很重要。从橱柜里拿出一些杯子和盘子。按大小、形状和颜色排列。现在按颜色、形状和大小排列。它们的顺序是一样的吗?