在数据库中排序整数

时间:2012-09-11 09:53:01

标签: mysql sql mysqli

我有这样的查询

SELECT user_id FROM user_rights ORDER BY user_id DESC;

为什么它会给我那些乱糟糟的数字?

USER_ID
4
4
4
4
3
3
21
21
21
21
21
21
20
20

它没有按预期排序数字。

证明:http://sqlfiddle.com/#!2/c753a/1

据我所知,他们可能按字母或数字排序,买我不明白为什么这个结果如此奇怪......

3 个答案:

答案 0 :(得分:5)

这是因为user_id不是数字。

尝试这个,

SELECT user_id 
FROM user_rights 
ORDER BY CAST(user_id as SIGNED) DESC;

SQLFiddle Demo

另一种解决方案是将列user_id的数据类型更改为int

答案 1 :(得分:0)

您的userid字段是varchar(64),因此它按字母顺序排序,降序(按SQL查询要求)。鉴于此,您的输出完全正确。

如果可以保证它始终是整数,则应更改userid数据类型或将其强制转换为整数。

答案 2 :(得分:0)

嘿,如果表中有多个用户条目,你可以使用group by而不是尝试顺序,即{。{1}}