mysql按多列不同方向排序

urf*_*ion 0 php mysql

我有桌子。

表结构是

在此处输入图片说明

现在我运行查询

SELECT * FROM `studentregistrations`
ORDER BY `studentregistrations`.`studentID`  DESC, `studentregistrations`.`studentName`
Run Code Online (Sandbox Code Playgroud)

我得到的结果是

在此处输入图片说明

我想要一个解释它是如何工作的。因为我很困惑它应该给出studentID降序和studentName升序的结果。

我检查了下面的答案,但没有得到任何正确的解释

mysql按多个项目查询顺序

PHP MySQL 按两列排序

Gol*_*rol 5

我认为您的期望是这些列是独立排序的,因此所有学生姓名都按字母顺序排列,所有学生 ID 都按降序排列,独立于姓名。如果发生这种情况,您会得到一个学生 ID 紧挨着错误姓名的结果,幸运的是这不会发生。

相反,它首先按第一列排序,然后按下一列排序。二级排序仅适用于第一列中具有相同值的组。

因此,如果您有 10 个具有相同 ID 的学生,那么对于该 ID,他们的姓名将按字母顺序排序。但是由于ID是唯一的,二次排序是没有用的。

例如,使用

ORDER BY UniversityId, StudentName
Run Code Online (Sandbox Code Playgroud)

这样,您就会有一个列表,其中同一所大学的所有学生都分组在一起,并且在这些组中,他们按姓名的字母顺序排序。