我有桌子。
表结构是
现在我运行查询
import os
import datetime
dict_final = {}
for elt in os.listdir('./tags'):
if os.path.isdir(elt):
# dict that compiles all filenames with last changes date
files_stats = {filename: os.stat(os.path.join(elt, filename)).st_mtime
for filename in os.listdir(elt)}
# Extract file changed last
filename, last_changes = max(files_stats.iteritems(), key=lambda x:x[1])
dict_final.update({elt: datetime.datetime.fromtimestamp(last_changes)})
print dict_final
我得到的结果是
我想要解释它是如何工作的。因为我感到困惑的是它应该按SELECT * FROM `studentregistrations`
ORDER BY `studentregistrations`.`studentID` DESC, `studentregistrations`.`studentName`
降序排列,而studentID
按升序排列。
我检查了下面的答案,但没有得到任何正确的解释
答案 0 :(得分:4)
我认为您的期望是列是独立排序的,因此所有学生姓名都按字母顺序排列,所有学生ID都按降序排列,与名称无关。如果发生这种情况,你会得到一个结果,其中学生ID在错误的名称旁边,所以幸运的是,这不会发生。
相反,它首先按第一列排序,然后按下一列排序。辅助排序仅适用于第一列中具有相同值的组。
因此,如果您有10名具有相同ID的学生,那么对于该ID,他们的名字将按字母顺序排序。 但由于ID是唯一的,因此二级排序是无用的。
例如,使用
会很有用ORDER BY UniversityId, StudentName
这样,您就会有一个列表,其中同一所大学的所有学生被分组在一起,并且在这些组中,他们按名称按字母顺序排序。
答案 1 :(得分:3)
使用多列排序时,第二列的顺序仅影响第一列中两个或多个值相等时的顺序。如果第一列中的所有值都是唯一的,则其他订单列无关紧要。
答案 2 :(得分:1)
按学生ID查询第一个订单,然后按照学生姓名命令任何“关系”。
完全尊重你的两个订单是不可能的,因为那时会出现行/列不匹配。