我已经创建了一个MySql表。但如果我将数据插入表中,我会遇到问题。
我的表格行看起来像这样
ID name
RS1 a
RS10 j
RS2 b
RS3 c
RS4 d
RS5 e
RS6 f
RS7 g
RS8 h
RS9 i
为什么在第二行添加ID no.10? 我使用MySQL Workbench来创建表,任何人都知道如何解决它?
答案 0 :(得分:1)
我推测你正在查询表格:
select t.*
from t
order by id;
按{em>字母顺序排序id
,而不是数字排序。因为" 1" < " 2"," 10"出现在" 2"。
以下是解决此问题的一种简单方法:
select t.*
from t
order by length(id), id;
还有其他方法,例如:
order by substr(id, 3) + 0
这会将从第三个字符开始的所有内容转换为一个更适合排序的数字。
答案 1 :(得分:0)
它由Workbench按字符串排序。
除非必须在字符串值前加上id,否则如果您关注查看顺序,我建议您使用自动增量字段。如果它是一个数字(自动增量),这将不是一个问题。
如果您想按时间顺序排序,还可以考虑使用created
或created_at
DateTime
字段。
我的猜测是你在Windows操作系统上,我经常遇到这个字符串排序不符合预期的问题。