Mysql: Порядок по с числовым значением показывает неправильный порядок - PullRequest
0 голосов
/ 12 июля 2020

Я использую Spring Boot 2.2.6.RELEASE. У меня метод репозитория выглядит так:

@Query(value = "SELECT m FROM Media m ORDER BY m.viewCount DESC")
Page<Media> findMedias(Pageable pageable);

Я получаю неупорядоченный список результатов с этим. Я попытался выполнить следующий запрос в cli:

SELECT media.view_count FROM mydb.media ORDER BY media.view_count DESC;

Результат выглядит так:

--------------
| 9          |
| 8          |
| 7          |
| 6          |
| 5          |
| 4          |
| 3          |
| 3          |
| 20         |
| 19         |
| 18         |
| 17         |
| 16         |
| 15         |
| 13         |
| 12         |
| 12         |
| 11         |
| 10         |
| 1          |
| 1          |
--------------

Я хочу, чтобы первым было значение 20, а не 9. Почему. MySQL сделать такой заказ? Сначала отображается одно значение di git вместо наибольшего числа?

EDIT:

Я использую файл sql для создания своих таблиц. Столбец view_count имеет тип LONG, а не String. Запрос выглядит так:

CREATE TABLE IF NOT EXISTS media(m_id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255) NOT NULL, category VARCHAR(10) NOT NULL, file_name VARCHAR(255) NOT NULL, view_count LONG NOT NULL, download_count LONG NOT NULL);

1 Ответ

1 голос
/ 12 июля 2020

view_count сохраняется как строка в вашей таблице, что не является неправильным. Если можете, измените его на целое число. Если вы не можете этого сделать, используйте следующую команду, чтобы получить желаемый результат.

SELECT m.view_count 
FROM media m 
ORDER BY CAST(m.view_count AS UNSIGNED) DESC;
...