SQL
ORDER BY
子句中的,对于示例中的此类表格。
[ a - b - c - d ]
--------------------------
[ x - 1 - i - e ]
[ y - 2 - k - f ]
[ z - 3 - m - g ]
如果我写下如下
的条款ORDER BY a ASC, b DESC, c DESC, d ASC
如果我将列的顺序更改为某些类似
,是否有任何区别ORDER BY d DESC, c DESC, b ASC, a ASC
或者它的工作方式是否相同并且没有任何区别,因为对于ORDER
与d DESC, c DESC, b ASC, a ASC
相同但不同顺序的列,它总是会选择精确的ORDER BY a ASC, b DESC, c DESC, d ASC
?
答案 0 :(得分:3)
两者非常非常不同。
ASC
和DESC
适用于特定密钥。它与键的顺序无关。
因此,按ORDER BY
列的第一个a
订单按升序排列。其余的密钥仅在存在联系a
时使用。
按列ORDER BY
按降序排列的第二个d
订单。其余的密钥仅在d
中有联系时使用。
当然,您可以找到两个版本相同的特定数据。但这很不寻常。
答案 1 :(得分:2)
显示的列/表达式的顺序很重要。它按照指定的顺序排序,然后按下一个排序,然后排序。结果与您要反转列的排序顺序不同。
将每个有序列视为先前有序列的子顺序。
(实际上,你可以用比写这个问题更短的时间来测试它......)
答案 2 :(得分:2)
ORDER BY a ASC, b DESC, c DESC, d ASC
表示
在您的示例中,它无关紧要,因为值是相同的,但在下面的示例中,它会感知到诸如
示例无序列表suach as;
| a | b | c | d |
-----------------------
| 10 | 5 | 2 | 7 |
| 10 | 3 | 1 | 7 |
| 5 | 5 | 6 | 3 |
| 4 | 2 | 5 | 3 |
| 5 | 4 | 6 | 3 |
| 3 | 5 | 9 | 4 |
| 3 | 6 | 6 | 4 |
| 5 | 5 | 6 | 3 |
| 4 | 2 | 5 | 3 |
| 5 | 4 | 6 | 3 |
| 3 | 5 | 1 | 4 |
| 3 | 6 | 2 | 4 |
和ORDER BY d ASC, a ASC, b DESC, c DESC;
| a | b | c | d |
-----------------------
| 4 | 2 | 5 | 3 |
| 4 | 2 | 5 | 3 |
| 5 | 5 | 6 | 3 |
| 5 | 5 | 6 | 3 |
| 5 | 4 | 6 | 3 |
| 5 | 4 | 6 | 3 |
| 3 | 6 | 6 | 4 |
| 3 | 6 | 2 | 4 |
| 3 | 5 | 9 | 4 |
| 3 | 5 | 1 | 4 |
| 10 | 5 | 2 | 7 |
| 10 | 3 | 1 | 7 |
然后在ORDER BY a ASC, b DESC, c DESC, d ASC
之后订购
| a | b | c | d |
--------------------
| 3 | 6 | 6 | 4 |
| 3 | 6 | 6 | 4 |
| 3 | 6 | 2 | 4 |
| 3 | 5 | 9 | 4 |
| 3 | 5 | 1 | 4 |
| 4 | 2 | 5 | 3 |
| 4 | 2 | 5 | 3 |
| 5 | 5 | 6 | 3 |
| 5 | 5 | 6 | 3 |
| 5 | 4 | 6 | 3 |
| 5 | 4 | 6 | 3 |
| 10 | 5 | 2 | 7 |
| 10 | 3 | 1 | 7 |
对于ORDER BY d DESC, c DESC, b ASC, a ASC
,结果将是那样的
| a | b | c | d |
| 10 | 5 | 2 | 7 |
| 10 | 3 | 1 | 7 |
| 3 | 5 | 9 | 4 |
| 3 | 6 | 6 | 4 |
| 3 | 6 | 2 | 4 |
| 3 | 5 | 1 | 4 |
| 5 | 4 | 6 | 3 |
| 5 | 4 | 6 | 3 |
| 5 | 5 | 6 | 3 |
| 5 | 5 | 6 | 3 |
| 4 | 2 | 5 | 3 |
| 4 | 2 | 5 | 3 |
请在此处使用订单命令播放给定示例http://rextester.com/LKBRK29917