php - Mysql select order by 就像一个字符串,而不是一个数字

标签 php mysql numbers int sql-order-by

如果你的数字可以低于 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 按字符串排序。如何让它按编号排序?

最佳答案

Karma 如果您已将其设为字符串,即 varchar 列,则将按字符串排序。

将列转换为 INT,它将按数字排序。

您还可以选择不更改表格,而是在排序时将列转换为正确的类型:

SELECT karma FROM table ORDER BY CAST(karma AS int) DESC

但这对性能不利。

关于php - Mysql select order by 就像一个字符串,而不是一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160994/

相关文章:

php - 转换为数组 VS is_array()

javascript - for 循环将 javascript 变量设置为 php 变量

mysql - 如何在没有公网IP的情况下远程访问本地MySQL数据库

javascript - 需要有关设计系统的建议

javascript - 如果我的表单的一个 div 可见,那么另一个 div 的值将被重置

php - date() 和夏令时的问题

Cocoa - 热键的键盘引用号;有详细说明这些的文档吗?

C 在float数组中找到2个最大的数字和2个最小的数字

php - 如何在 PHP 中获取整数的二进制等价物中的第 n 位(从右起)?

javascript - 在 php/javascript 中设置来自数据库的最大输入文本数