Mysql为什么第2列没有从1到3排序?

时间:2018-06-16 05:51:21

标签: mysql sql

为什么订购不适用于第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 个答案:

答案 0 :(得分:2)

我认为它的排序正确。在您的订单中,您已要求系统先通过第一列订购,以便订购,然后您已要求它按第二列订购,以便它具有 它必须保持第一列的排序。 2.按第二栏排序

所以它在集团内的排序意味着......

 Table Test 
 A| B
 --------
  1  1
  1  3
  1  2

Select * from test order by A, B 
Output 
A | B 
 1  1 
 1  2
 1  3

希望这可以解除你的怀疑。

答案 1 :(得分:1)

输出中的每个记录/行必须一致。当您使用order by时,您将打印基于特定列值排序的记录/行。您不能通过破坏行的一致性来对单个列进行排序。否则会造成严重破坏,想象'select bank_account_id, balance from bank_record order by bank_account_id, balance;'之类的东西。如果对bank_account_id和balance进行单独排序,您认为会发生什么?