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(%)的工作方式感到困惑。这个命令是怎么产生的?
如果将查询更改为
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)