SQL: 对同一列先升序再降序排序
SQL: Sorting the same column asc then desc
我尝试使用 order by 子句对同一列上的数据进行排序和重新排序。我的查询是:
SELECT * FROM Customers ORDER BY Country ASC, Country DESC;
结果令人惊讶。它仅按升序对 Country
列进行排序。
据我所知,Country
列应该先按升序排序,然后再按降序排序。
为什么 SQL 跳过查询的下一部分?
当您在ORDER BY
子句中指定多个项目时,顺序确定如下:
- 结果使用第一顺序规范(列名 + 方向)排序
- 任何剩余的关系都使用二阶规范解决,
- 任何剩余的关系都使用三阶规范解决,依此类推。
无论方向如何,使用同一列解析并列都不会更改顺序,因为列中的值在并列组中是相同的。
我尝试使用 order by 子句对同一列上的数据进行排序和重新排序。我的查询是:
SELECT * FROM Customers ORDER BY Country ASC, Country DESC;
结果令人惊讶。它仅按升序对 Country
列进行排序。
据我所知,Country
列应该先按升序排序,然后再按降序排序。
为什么 SQL 跳过查询的下一部分?
当您在ORDER BY
子句中指定多个项目时,顺序确定如下:
- 结果使用第一顺序规范(列名 + 方向)排序
- 任何剩余的关系都使用二阶规范解决,
- 任何剩余的关系都使用三阶规范解决,依此类推。
无论方向如何,使用同一列解析并列都不会更改顺序,因为列中的值在并列组中是相同的。