order by `order`=0,`order`
这是什么意思?这是不寻常的,通常我们使用
order by `order` asc
不是吗?
这将导致order
等于零的所有行首先排序,然后按照数字顺序排列order
非零的行。如果order总是大于或等于零,这将与按顺序排序相同,但是,如果order
可以是负数,它将产生效果。
请考虑以下数据:
Order | ID
======|===
0 | A
10 | B
5 | C
-5 | D
按order
排序将为您提供:
Order | ID
======|===
-5 | D
0 | A
5 | C
10 | B
虽然按order=0,order
排序会给你:
Order | ID
======|===
0 | A
-5 | D
5 | C
10 | B
请注意,具有A的ID
的行位于开头,之前是第二行。
这按两个值排序。
第一个值(排序依据)是order = 0
,如果1
是order
则为0
,否则为0
(=
是正常的比较运算符)。
如果两行的值相同,则它将按order
字段本身排序。