我有这样的查询
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
据我所知,他们可能按字母或数字排序,买我不明白为什么这个结果如此奇怪......
答案 0 :(得分:5)
这是因为user_id
不是数字。
尝试这个,
SELECT user_id
FROM user_rights
ORDER BY CAST(user_id as SIGNED) DESC;
另一种解决方案是将列user_id
的数据类型更改为int
答案 1 :(得分:0)
您的userid字段是varchar(64)
,因此它按字母顺序排序,降序(按SQL查询要求)。鉴于此,您的输出完全正确。
如果可以保证它始终是整数,则应更改userid数据类型或将其强制转换为整数。
答案 2 :(得分:0)
嘿,如果表中有多个用户条目,你可以使用group by而不是尝试顺序,即{。{1}}