Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql:Order By带数值显示错误的顺序_Mysql_Spring Boot_Casting_Sql Order By - Fatal编程技术网

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
。我的错,谢谢我用创建媒体表的查询更新了我的问题。