У меня проблема с запросом SQL. Я хочу, чтобы мои результаты сортировались в порядке возрастания, но проблема в том, что БД сортирует мне результаты только по первому значению, тогда как логически 2 должно быть до 19, например.
Вот мой запрос и скриншот результата, который не идет вообще:
SELECT * FROM mail WHERE titre LIKE '%$mot%' ORDER BY mail.titre ASC
Я хочу, чтобы все результаты сортировались так: 1 2 3 4 5 … 101 102 103 … 8845 8850 … и так далее.
У вас есть идея для этой проблемы?
С уважением.
Я думаю, что ваша колонка помечена как char
, Таким образом, СУБД сортирует по строковому значению. Вы должны преобразовать свои значения в int в предложении sort.
SELECT * FROM mail WHERE titre LIKE '%$mot%' ORDER BY convert(mail.titre, unsigned integer) ASC
Не буду делать У вас есть столбец string / char [], и заказ, который вы ищете, работает только на числа.
Вам нужно преобразовать этот столбец в числа, если это возможно.
Вы можете использовать приведение:
CAST(mail.titre,int)
Примеры здесь:
Преобразование текстового столбца в целое число в MySQL
Насколько я вижу, поле представляет собой varchar / text … Так что, чтобы отсортировать их правильно, вам нужно будет привести это поле (если возможно)
Пример:
SELECT * FROM mail WHERE titre LIKE '%$mot%' ORDER BY CAST(mail.titre AS int) ASC