以下SQL语句从Customers
表中选择所有客户,并按列Country
和CustomerName
进行排序,但令我感到困惑的是,因为国家/地区的结果还不错,因为ASC
-默认情况下,它从AZ开始,而CustomerName
应该是ASC,但结果不是!所以不是ASC,为什么?
答案 0 :(得分:1)
您的结果确实已正确排序。首先按国家/地区订购,然后按CustomerName进行订购。在阿根廷,您的客户已正确排序。在巴西,它们的分类正确。
如果您希望Comercio Miniero在列表中排第二,请问问自己这将如何影响您的国家/地区排序顺序。排序顺序将处理所有第一列,然后在现有顺序内处理您列出的第二列。
答案 1 :(得分:0)
排序很好,并且可以完成预期的工作。
它按国家然后按客户排序。客户 在每个国家/地区排名... 。
更仔细地查看结果。在阿根廷,客户是有秩序的,在巴西等地也是。
您希望它如何精确地同时按两列排序?排序列中的数据将不再与同一行中的数据匹配。例如“ Rancho grande”必须位于底部附近,而不是其所属的“ Argentina”旁边。
从逻辑上讲,您似乎期望发生的事情没有任何意义。
答案 2 :(得分:0)
显示的结果似乎按照指定的顺序。
ORDER BY Country, CustomerName
指定将首先按Country
的值对行进行排序。结果似乎正确排序:阿根廷,奥地利,比利时,巴西。
对于具有相同值Country
的行,这些行也将按值CustomerName
进行排序。
同样,每组具有相同国家(地区)值的行似乎都正确排序,例如,对于巴西,C...
,F...
和G...
如果我们指定ORDER BY CustomerName
,则将以不同的顺序获得行。对于样本数据,没有重复的CustomerName
值,那么我们可以向ORDER BY
添加其他表达式,而这些表达式对行的顺序没有影响。
答案 3 :(得分:0)
图像中显示的结果正确。当查询指定ORDER BY Country, CustomerName
时,首先要按照国家(地区)名称进行排序,并且对于每个国家(地区),客户都按升序排序。