Как я могу решить эту маленькую проблемуSQL Сортировка терпит неудачу
вот скриншот:
и это запрос:
SELECT *
FROM serverinfo
ORDER BY rank_pts DESC
Как вы можете видеть порядок является интродуцированным.
Как я могу решить эту маленькую проблемуSQL Сортировка терпит неудачу
вот скриншот:
и это запрос:
SELECT *
FROM serverinfo
ORDER BY rank_pts DESC
Как вы можете видеть порядок является интродуцированным.
Изменить rank_pts
FLOAT *edit
. Похоже, что это неправильный тип для сортировки
Кажется, что ваш столбец ranl_pts является varchar, поэтому он не сортируется как цифры.
Используйте ниже трюк.
SELECT *
FROM serverinfo
ORDER BY rank_pts+0 DESC
ИЛИ
SELECT *
FROM serverinfo
ORDER BY CAST(rank_pts AS DOUBLE) desc
спасибо чувак :-) – Dave
Вы можете попробовать это:
ORDER BY CAST(rank_pts as float) DESC
Вы, вероятно, следует изменить этот тип столбца с плавающей точкой. Как указывали другие, он выглядит как колонка varchar или text. Если это не так, и PHPMyAdmin просто отображает его в локализованном формате (десятичные числа, представленные вместо, - для нас, английских людей), пожалуйста, любезно проигнорируйте остальную часть моего ответа.
Хотя приведение результата в ваш запрос будет работать, как предложил Альберто, это неэффективно для каждого запроса. Если вы хотите манипулировать и сортировать данные численно, вы должны сохранить их численно. В конце концов вы можете отображать числа под другой локализацией, и у вас будет другая головная боль.
Я бы сохранил данные в виде поплавка в БД и обработал любую логику о том, как отображать его в локализованном формате на стороне приложения.
+1. Оставьте форматирование на передней панели. Хранение форматированных значений делает приложения очень хрупкими. – Leigh
Я рекомендую изменить тип данных столбца как числовой, а не символьный. Это, безусловно, повлияет на другие части кода, но я считаю целесообразным, чтобы избежать других побочных эффектов, имеющих числовое значение, хранящееся как представление символа.
Очевидно, что быстрое исправление заключается в том, чтобы вывести столбец в order by
, как уже указывали другие кодеры.
Я действительно разочарован тем, что многие из рассмотренных выше вопросов касаются быстрого исправления, а не фактического решения. –
SELECT *
FROM serverinfo
ORDER BY CAST(Rank_Pts AS DOUBLE) desc
но разобьется «» – Dave
Мех, +1 для реализации типа, вероятно, VARCHAR, но -1 предложившего Int, когда он явно имеет десятичные значения, которые он должен хранить. Так что +0 от меня. – Interrobang
Да, вы правы @Interrobang. Извини за это ! – seanbreeden