考虑以下结果code:type VARCHAR:
SELECT code
FROM lock
ORDER BY CAST(code AS signed) > 0 DESC, `code
|code|
|4 |
|420 |
|5 |
|T6 |
|X30 |
Run Code Online (Sandbox Code Playgroud)
如何更改查询以便按此顺序返回结果:
|code|
|4 |
|5 |
|420 |
|T6 |
|X30 |
Run Code Online (Sandbox Code Playgroud)
SELECT code
FROM lock
ORDER BY CAST(code AS signed) > 0 DESC, CAST(code AS signed) ASC, code ASC
Run Code Online (Sandbox Code Playgroud)
第一个订单将数字排序到前面.第二个订单只会对数字进行排序,而第一个订单会将它们保持在开头.第三个只会对字符串进行排序,数字将保持其顺序,因为它们已经排序.