Как сделать заказ по ID с MySql (ID 1-20)? - PullRequest
1 голос
/ 04 ноября 2011

если я закажу свои данные 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

Ответы [ 4 ]

0 голосов
/ 04 ноября 2011

Приведите поле ID к целому числу, чтобы получить числовой порядок:

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

Этот запрос будет неэффективным, поскольку он не может использовать индекс в поле id. Для повышения эффективности следует рассмотреть возможность изменения столбца в базе данных на числовой тип вместо символьного типа.

0 голосов
/ 04 ноября 2011

я предполагаю, что тип данных ID - это какая-то строка.если вы измените его на Int, вы должны увидеть правильную (числовую) сортировку, которую вы ожидаете.

0 голосов
/ 04 ноября 2011

Ваше поле идентификатора не int, а varchar. Измените его на int.

0 голосов
/ 04 ноября 2011

ORDER BY id ASC; - при условии, что ваш идентификатор имеет числовой тип данных

...