SQL:按相同列升序排序然后降序排序

3

我尝试使用order by子句在同一列上对数据进行排序和重新排序。我的查询语句如下:

SELECT * FROM Customers ORDER BY Country ASC, Country DESC;

结果令人惊讶。它只按升序对Country列进行排序。

据我所知,Country列应该先按升序排序,然后再按降序排序。

为什么SQL跳过了查询的下一部分?


首先按照国家升序排序,然后在重复的情况下按照国家降序排序... - jarlh
@JacobH 显然,我无法按升序和降序对其进行排序。我只想要一个关于为什么从句的第二部分没有起作用的合适解释。 - kode master
我非常期待知道您的预期结果。首先按国家升序排序,然后按国家降序排序,最后是胜者还是什么? - Tim Schmelter
你是如何运行这个查询的?当我尝试类似的东西时,会显示“Msg 169,Level 15,State 1,Line 1-在order by列表中指定了多次列。order by列表中的列必须是唯一的。” - Jacob H
1
@JacobH:数据库管理系统产品的世界不仅限于SQL Server。 - user330315
显示剩余2条评论
1个回答

7
当您在ORDER BY子句中指定多个项目时,排序方式如下:
  • 使用第一个排序规范(列名+方向)对结果进行排序
  • 任何剩余的绑定将使用第二个排序规范解决
  • 任何剩余的绑定将使用第三个排序规范解决,依此类推。
使用相同的列解决绑定,无论方向如何,都不会改变排序顺序,因为在绑定组内,该列中的值是相同的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接