为什么第2栏的顺序不对。有人能解释一下吗。
select a,b from d:
+------+------+
| a | b |
+------+------+
| 1 | 3 |
| 1 | 3 |
| 2 | 1 |
| 2 | 1 |
| 3 | 2 |
| 3 | 2 |
| 3 | 2 |
+------+------+
select a,b from d order by a,b;
+------+------+
| a | b |
+------+------+
| 1 | 3 |
| 1 | 3 |
| 2 | 1 |
| 2 | 1 |
| 3 | 2 |
| 3 | 2 |
| 3 | 2 |
+------+------+
2条答案
按热度按时间lokaqttq1#
我认为它的顺序是正确的。在您的order by中,您要求系统首先按第一列排序,这样它就排序了,然后您要求它按第二列排序,这样它就有了1。它必须保持第一列的顺序。2也按第二列排序
所以在组内排序意味着如果。。
希望这能消除你的疑虑。
qpgpyjmq2#
输出中的每个记录/行必须一致。使用“排序方式”时,打印的是根据特定列值排序的记录/行。不能通过破坏行的一致性来对单个列进行排序。否则会造成大破坏,想象一下
'select bank_account_id, balance from bank_record order by bank_account_id, balance;'
. 如果银行账户id和余额分别排序,您认为会发生什么?