如果我按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。