Mysql:Order By带数值显示错误的顺序
我使用的是Mysql:Order By带数值显示错误的顺序,mysql,spring-boot,casting,sql-order-by,Mysql,Spring Boot,Casting,Sql Order By,我使用的是springboot2.2.6.RELEASE。我有一个存储库方法,如下所示: @Query(value = "SELECT m FROM Media m ORDER BY m.viewCount DESC") Page<Media> findMedias(Pageable pageable); -------------- | 9 | | 8 | | 7 | | 6 | | 5
springboot2.2.6.RELEASE
。我有一个存储库方法,如下所示:
@Query(value = "SELECT m FROM Media m ORDER BY m.viewCount DESC")
Page<Media> findMedias(Pageable pageable);
--------------
| 9 |
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 3 |
| 20 |
| 19 |
| 18 |
| 17 |
| 16 |
| 15 |
| 13 |
| 12 |
| 12 |
| 11 |
| 10 |
| 1 |
| 1 |
--------------
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);
结果如下所示:
@Query(value = "SELECT m FROM Media m ORDER BY m.viewCount DESC")
Page<Media> findMedias(Pageable pageable);
--------------
| 9 |
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 3 |
| 20 |
| 19 |
| 18 |
| 17 |
| 16 |
| 15 |
| 13 |
| 12 |
| 12 |
| 11 |
| 10 |
| 1 |
| 1 |
--------------
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);
我希望值20是第一个,而不是9。为什么MySQL会做这种订单?它首先显示一个数字值,而不是最高的数字
编辑:
我使用sql文件创建表<代码>查看\u计数列将LONG
作为类型,而不是字符串。查询如下所示:
@Query(value = "SELECT m FROM Media m ORDER BY m.viewCount DESC")
Page<Media> findMedias(Pageable pageable);
--------------
| 9 |
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 3 |
| 20 |
| 19 |
| 18 |
| 17 |
| 16 |
| 15 |
| 13 |
| 12 |
| 12 |
| 11 |
| 10 |
| 1 |
| 1 |
--------------
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);
视图计数作为字符串存储在表中,这是正确的。如果可以,则将其更改为整数。如果您不能做到这一点,请使用下面的命令获得所需的输出
SELECT m.view_count
FROM media m
ORDER BY CAST(m.view_count AS UNSIGNED) DESC;
看起来
view\u count
属于字符串类型。不是吗?将其更改为正确的数字类型。@stickybit我更新了我的问题。我使用LONG as type而不是String。LONG
是mediumtext
的别名,即字符串类型。我不希望LONG
是mediumtext
。我的错,谢谢我用创建媒体表的查询更新了我的问题。