如何使用MySql (ID 1-20)按ID订购


How to Order by ID with MySql (ID 1-20)?

如果我按id排序我的SQL数据,id是1 - 20,我得到这样的结果:

id ; val
1 ; 1
10 ; 1
11 ; 1
12 ; 1
13 ; 1
2 ; 1
3 ; 1
4 ; 1

但是10比4大…我该怎么做才能使订单正常?

SELECT ID, SUM((Amount)) AS AmountSum
FROM `testdata`
GROUP BY ID
ORDER BY ID

id = int

ORDER BY id ASC; -提供id为数值数据类型

我猜ID的数据类型是某种字符串。如果您将其更改为Int,则应该看到您期望的正确(数字)排序。

将ID字段强制转换为整数以获得数字排序:

SELECT ID, SUM(Amount) AS AmountSum
FROM testdata
GROUP BY ID
ORDER BY CAST(ID AS UNSIGNED INTEGER)

这个查询将是低效的,因为它不能在id字段上使用索引。为了提高效率,您应该考虑将数据库中的列更改为数字类型,而不是字符类型。

您的id字段不是int而是varchar。将其改为int。