一个mysql命令按用法?

问题描述 投票:-3回答:2
order by `order`=0,`order`

这是什么意思?这是不寻常的,通常我们使用

order by `order` asc

不是吗?

mysql
2个回答
3
投票

这将导致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的行位于开头,之前是第二行。


1
投票

这按两个值排序。

第一个值(排序依据)是order = 0,如果1order则为0,否则为0=是正常的比较运算符)。

如果两行的值相同,则它将按order字段本身排序。

© www.soinside.com 2019 - 2024. All rights reserved.