Проблема с помощью MySQL Заказать BY - Могу ли я использовать Natsort, чтобы исправить это?

StackOverflow https://stackoverflow.com/questions/2173961

  •  24-09-2019
  •  | 
  •  

Вопрос

Мне нужно использовать естественную сортировку с результатом MySQL, поскольку в настоящее время он сортирует свои значения int следующим образом:

  • 1
  • 123
  • 1256
  • 22
  • 231

так далее

Пока мне понадобится его, как

  • 1
  • 22
  • 231
  • 1256

Я знаю о функции «НАСОРТ», но она не работает для результата запроса MySQL. Как я могу сортировать (естественно), возможно ли это сделать в запросе?

Спасибо за помощь!

Редактировать: пример запроса $result = mysql_query("SELECT * FROM forums ORDER BY 'posts' DESC;");

Не совсем уверена, если мое использование DESC существует, но он не бросает ошибку, поэтому она должна быть в порядке. К сожалению, кажется, не имеет никакого эффекта ...

Это было полезно?

Решение

Запрос, который вы разместили, есть сортировка по постоянному строковому выражению, а не имя или положение столбца. Либо используйте BackTicks для цитата, либо вывезти цитаты:

SELECT * FROM forums ORDER BY `posts` DESC

или, может быть

SELECT * FROM forums ORDER BY posts DESC

Объяснит, почему изменение между ASC и DESC не имеет никакого эффекта.

Первоначальный ответ был:

Описываемый вами заказ сортировки, предполагает, что значения INT на самом деле хранятся в виде типа символа (или, возможно, преобразованы в символ перед сортировкой).

Проверьте, храняте ли вы данные в цифровом или символьном типе. Если возможно, используйте числовой тип, то порядок естественного сортировки будет так, как вам требуется. если ты неверно Измените текущий тип данных, чтобы быть INT, вы можете сделать это в вашем запросе (например, использование В РОЛЯХ), вероятно, по стоимости производительности.

Другие советы

Если бы посты были столбцами без int, вы можете попробовать это:

SELECT * FROM forums ORDER BY CAST(`posts` AS INT) DESC

Также посмотрите на http://drupal.org/project/natsort.. Отказ Это модуль Drupal, который можно использовать для облегчения сортировки MySQL.

Этот вопрос Имеет ответ на MySQL, который я использовал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top