如果您的号码低于0且大于0,您如何按号码订购?
示例Mysql表:
|Name|Karma|
__________
|Me | -8 |
|Bill| 5 |
|Tom | 2 |
|Saly| 0 |
|San.| -3 |
示例选择查询
$sql="SELECT karma FROM table ORDER BY karma DESC";
我得到的结果是这个(用逗号分隔):5,2,0,-8,-3。 不应该是5,2,0,-3,-8? 我在互联网上的某处发现mysql按字符串排序。如何按编号订购?
答案 0 :(得分:17)
Karma
如果您将其设为字符串,即varchar
列,则会以字符串形式排序。
将列转换为INT
,它将按数字顺序排列。
您还可以选择不更改表格,但在排序时将列转换为正确的类型:
SELECT karma FROM table ORDER BY CAST(karma AS int) DESC
但这对性能不利。
答案 1 :(得分:14)
还有另一个最奇怪的选择:
SELECT karma FROM table ORDER BY karma+0 DESC