我有这样的查询
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
我知道它们可能是按字母顺序或数字顺序排列的,买我不明白为什么这个结果如此奇怪......
我有这样的查询
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
我知道它们可能是按字母顺序或数字顺序排列的,买我不明白为什么这个结果如此奇怪......
这是因为user_id
不是数字。
试试这个,
SELECT user_id
FROM user_rights
ORDER BY CAST(user_id as SIGNED) DESC;
另一种解决方案是将列的数据类型更改user_id
为int
您的 userid 字段是 a varchar(64)
,因此它按字母顺序降序排序(根据 SQL 查询的要求)。鉴于此,您的输出完全正确。
您应该更改您的用户 ID 数据类型,或将其转换为整数(如果您可以保证它始终是整数)。
hey if there are multiple entries of user in table than you can use group by and than try order by i.e.SELECT user_id FROM user_rights GROUP BY user_id ORDER BY CONVERT(int,user_id) DESC;