我有桌子。
表结构

现在我运行查询
SELECT * FROM `studentregistrations`
ORDER BY `studentregistrations`.`studentID` DESC, `studentregistrations`.`studentName`我得到的结果是

我想要解释一下它是如何工作的。因为我感到困惑的是,它应该给出结果,就像studentID是降序的,studentName是按升序的。
我核对了下面的答案,但没有得到任何正确的解释。
发布于 2016-02-03 10:52:21
我认为您的期望是,这些列是独立排序的,所以所有学生的名字都是按字母顺序排列的,所有的学生ids都是按降序排列的,在名字上是独立的。如果发生这种情况,您将得到一个学生id在错误名称旁边的结果,因此幸运的是,没有发生这种情况。
相反,它首先按第一列排序,然后按下一列排序。次要排序仅适用于第一列中具有相同值的组。
因此,如果有10个学生的ID相同,那么他们的名字将按字母顺序排列。但是,由于ID是唯一的,二次排序是无用的。
例如,使用
ORDER BY UniversityId, StudentName这样的话,你就会有一个列表,其中同一所大学的所有学生都分组在一起,在这些组中,他们是按名字按字母顺序排列的。
发布于 2016-02-03 10:51:44
使用多列进行排序时,第二列的顺序仅在第一列中两个或多个值相等时才会影响排序顺序。如果第一列中的所有值都是唯一的,则其他顺序列并不重要。
发布于 2016-02-03 10:51:55
您的查询首先根据学生id订购,然后再按学生名订购任何“领带”。
这是不可能让你的两个订单的付款全额,因为那样就会有行/列不匹配。
https://stackoverflow.com/questions/35174951
复制相似问题