MySQL查询ORDER BY与模数

muz*_*ara 2 mysql sql sql-order-by

我的SELECT查询

SELECT ID, NAME  FROM TBL_USER ORDER BY ID % 2, ID % 3
Run Code Online (Sandbox Code Playgroud)

输出:

   ID   |  NAME 
--------|---------
    6   |   AB
    12  |   BC
    4   |   XY
    10  |   YZ
    2   |   C1
    8   |   C2
    3   |   A3
    9   |   MN
    1   |   K2
    7   |   WQ
    13  |   OP
    5   |   HJ 
    11  |   KN
Run Code Online (Sandbox Code Playgroud)

我对ORDER BY与MODULUS(%)的工作方式感到困惑。这个命令是怎么产生的?

Ken*_*ney 5

如果将查询更改为

SELECT ID, NAME, ID %2, ID %3  FROM TBL_USER ORDER BY ID % 2, ID % 3
Run Code Online (Sandbox Code Playgroud)

包含ORDER BY对其进行操作的值变得很清楚:

+------+------+-------+-------+
| ID   | NAME | ID %2 | ID %3 |
+------+------+-------+-------+
|    6 | AB   |     0 |     0 |
|   12 | BC   |     0 |     0 |
|    4 | XY   |     0 |     1 |
|   10 | YZ   |     0 |     1 |
|    2 | C1   |     0 |     2 |
|    8 | C2   |     0 |     2 |
|    9 | MN   |     1 |     0 |
|    3 | A3   |     1 |     0 |
|    1 | K2   |     1 |     1 |
|    7 | WQ   |     1 |     1 |
|   13 | OP   |     1 |     1 |
|    5 | HJ   |     1 |     2 |
|   11 | KN   |     1 |     2 |
+------+------+-------+-------+
Run Code Online (Sandbox Code Playgroud)