Ais*_*tis 6 php mysql int numbers sql-order-by
如果您的号码低于0且大于0,您如何按号码订购?
示例Mysql表:
|Name|Karma|
__________
|Me | -8 |
|Bill| 5 |
|Tom | 2 |
|Saly| 0 |
|San.| -3 |
Run Code Online (Sandbox Code Playgroud)
示例选择查询
$sql="SELECT karma FROM table ORDER BY karma DESC";
Run Code Online (Sandbox Code Playgroud)
我得到的结果是这个(用逗号分隔):5,2,0,-8,-3.不应该是5,2,0,-3,-8?我在互联网上的某处发现mysql按字符串排序.如何按号码订购?
Pek*_*ica 17
Karma如果你把它作为一个字符串,即一个varchar列,它将被作为字符串排序.
将列转换为a INT,它将以数字顺序排序.
您还可以选择不更改表,但在排序时将列转换为正确的类型:
SELECT karma FROM table ORDER BY CAST(karma AS int) DESC
Run Code Online (Sandbox Code Playgroud)
但这对性能不利.
Cri*_*ian 14
还有另一个最奇怪的选择:
SELECT karma FROM table ORDER BY karma+0 DESC
Run Code Online (Sandbox Code Playgroud)