Как Вы заказываете числом, если Ваше число может упасть ниже и быть больше, чем 0?
Таблица Example Mysql:
|Name|Karma|
__________
|Me | -8 |
|Bill| 5 |
|Tom | 2 |
|Saly| 0 |
|San.| -3 |
Запрос Select в качестве примера
$sql="SELECT karma FROM table ORDER BY karma DESC";
Результат, который я получаю, является этим (разделенный запятой): 5,2,0,-8,-3. Разве это не должно быть 5,2,0,-3,-8? Я обнаружил где-нибудь в Интернете, что mysql заказывает строкой. Как заставить его заказать числом?
Карма
будет упорядочена как строка, если вы сделали ее строкой, то есть столбцом varchar
.
Преобразуйте столбец в INT
, и он упорядочит числовой порядок.
У вас также есть возможность не изменять таблицу, но приводить столбец к нужному типу при сортировке:
SELECT karma FROM table ORDER BY CAST(karma AS int) DESC
но это плохо для производительности.
Есть еще один странный вариант:
SELECT karma FROM table ORDER BY karma+0 DESC