除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。理解这个内容的最好办法是看一个例子
正如所见,这里的输出与上面的查询相同。不同之处在于ORDER BY子句。SELECT清单中指定的是选择列的相对位置而不是列名。ORDER BY 2表示按SELECT清单中第二个列,prod_name列进行排序。ORDER BY 2,3表示先按prod_price,再按prod_name进行排序。
此技术的主要好处在于不用重新输入列名。但它也有缺点。首先,不明确给出列名增加了错用列名排序的可能性。其次,在对SELECT清单进行更改时容易错误地对数据进行排序(忘记对ORDER BY子句做相应的改动)。最后,如果进行排序的列不在SELECT清单中,显然不能使用这项技术。
按非选择列排序 显然,当根据不出现在SELECT清单中的列进行排序时,这项技术不能采用。但是,如果有必要,可以混合匹配使用实际列名和相对列位置。