我有桌子。
表结构是
现在我运行查询
SELECT * FROM `studentregistrations`
ORDER BY `studentregistrations`.`studentID` DESC, `studentregistrations`.`studentName`
Run Code Online (Sandbox Code Playgroud)
我得到的结果是
我想要一个解释它是如何工作的。因为我很困惑它应该给出studentID降序和studentName升序的结果。
我检查了下面的答案,但没有得到任何正确的解释
我认为您的期望是这些列是独立排序的,因此所有学生姓名都按字母顺序排列,所有学生 ID 都按降序排列,独立于姓名。如果发生这种情况,您会得到一个学生 ID 紧挨着错误姓名的结果,幸运的是这不会发生。
相反,它首先按第一列排序,然后按下一列排序。二级排序仅适用于第一列中具有相同值的组。
因此,如果您有 10 个具有相同 ID 的学生,那么对于该 ID,他们的姓名将按字母顺序排序。但是由于ID是唯一的,二次排序是没有用的。
例如,使用
ORDER BY UniversityId, StudentName
Run Code Online (Sandbox Code Playgroud)
这样,您就会有一个列表,其中同一所大学的所有学生都分组在一起,并且在这些组中,他们按姓名的字母顺序排序。