mysql排序失效问题的解决

目录
  • 问题
  • 解决:

问题

可以看到sql语句是没有问题的,但是排序缺出现问题

发现这个字段是varchar类型。不能直接排序

解决:

在不修改原有设计的情况下,只能改SQL了,我们需要先把字符串转数字。

字符串转数字的三种方式:

(1)+0

order by (serial_number+0) desc

(2)用函数CAST(value as type)或CONVERT(value, type)

type可为DECIMAL (浮点数 )、SIGNED(整数)、UNSIGNED (无符号整数 )

order by CAST(serial_number as SIGNED) desc

order by CONVERT(serial_number,SIGNED) desc

到此这篇关于mysql排序失效问题的解决的文章就介绍到这了,更多相关mysql 排序失效内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL利用UNION连接2个查询排序失效详解

    概述 UNION 连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录 UNION ALL 连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录 今天在接到一个需求的时候使用了UNION进行查询后发现,如果两个查询分别使用ORDER BY后拼接居然无法成功排序,经过了好一番折腾,记录下 表结构及数据 -- 创建表 CREATE TABLE test_user ( ID int(11) NOT NULL AUTO_INCREMENT, USER_ID int(11

  • mysql排序失效问题的解决

    目录 问题 解决: 问题 可以看到sql语句是没有问题的,但是排序缺出现问题 发现这个字段是varchar类型.不能直接排序 解决: 在不修改原有设计的情况下,只能改SQL了,我们需要先把字符串转数字. 字符串转数字的三种方式: (1)+0 order by (serial_number+0) desc (2)用函数CAST(value as type)或CONVERT(value, type) type可为DECIMAL (浮点数 ).SIGNED(整数).UNSIGNED (无符号整数 )

  • MySQL之主键索引排序失效问题

    目录 主键索引排序失效 现在初始化几行数据 查一下所有记录 查看一下执行计划 总结 主键索引排序失效 环境:MySQL8 有一张用户信息表user_info,建表DDL如下: CREATE TABLE `user_info` ( `id` int(11) NOT NULL COMMENT '用户编号', `age` int(11) NOT NULL COMMENT '用户年龄', PRIMARY KEY (`id`), KEY `idx_age` (`age`) USING BTREE COMM

  • MySQL数据误删除的快速解决方法(MySQL闪回工具)

    概述 Binlog2sql是一个Python开发开源的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binlog解析为回滚的SQL,去除主键的INSERT SQL,是DBA和运维人员数据恢复好帮手. 一.安装配置 1.1 用途 数据快速回滚(闪回) 主从切换后新master丢数据的修复 从binlog生成标准SQL,带来的衍生功能 支持MySQL5.6,5.7 1.2 安装 shell> git clone https://github.com/danfengc

  • 导致MySQL索引失效的一些常见写法总结

    前言 最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢SQL,导致MySQL的CPU资源飙升,基于此,给大家简单分享下这些比较使用的易于学习和使用的经验. 这次的话简单说下如何防止你的索引失效. 再说之前我先根据我最近的经验说下我对索引的看法,我觉得并不是所以的表都需要去建立索引,对于一些业务数据,可能量比较大了,查询数据已经有了一点压力,那么最简单.快速的办法就是建立合适的索引,但是有些业务可能表里就没多少数据,或者表的使用

  • mysql索引失效的几种情况分析

    1.最佳左前缀原则--如果索引了多列,要遵守最左前缀原则.指的是查询要从索引的最左前列开始并且不跳过索引中的列. 前提条件:表中已添加复合索引(username,password,age) 分析:该查询缺少username,查询条件复合索引最左侧username缺少,违反了最佳左前缀原则,导致索引失效,变为ALL,全表扫描 分析:查询条件缺少username,password,查询条件复合索引最左侧username,password缺少,违反了最佳左前缀原则,导致索引失效,变为ALL,全表扫描

  • IDEA连接mysql数据库报错的解决方法

    IDEA连接mysql数据库出现Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually. 报错意思是服务器返回了无效时区.也就是我们的数据库返回了无效的时区. 如图所示: 报错中显示让我们去Advanced下的serverTimezone看看. 那我们就打开Advanced看看 可以看到这里显示的时域为空的,我们填入Asia/Shanghai 搞定.注意这里可

  • SpringBoot对Druid配置SQL监控功能失效问题及解决方法

    由于我使用的是properties类型的配置文件,在对druid的参数进行配置的时候,多加了druid,也就是spring.datasource.druid.xxx,运行sql语句后SQL监控功能无效. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/userinfo?useUnicode=true&characterEnc

  • MySQL索引失效的典型案例

    典型案例 有两张表,表结构如下: CREATE TABLE `student_info` (   `id` int(11) NOT NULL,   `name` varchar(10) DEFAULT NULL,   PRIMARY KEY (`id`),   KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 CREATE TABLE `student_score` (   `id` int(11) NOT NULL,

  • mysql索引失效的十大问题小结

    目录 背景 一.查询条件包含or,可能导致索引失效 二.如何字段类型是字符串,where时一定用引号括起来,否则索引失效 三.like通配符可能导致索引失效. 四.联合索引,查询时的条件列不是联合索引中的第一个列,索引失效. 五.在索引列上使用mysql的内置函数,索引失效. 六.对索引列运算(如,+.-.*./),索引失效. 七.索引字段上使用(!= 或者 < >,not in)时,可能会导致索引失效. 八.索引字段上使用is null, is not null,可能导致索引失效. 九.左连

  • Mysql排序的特性详情

    目录 1.问题场景 2.原因分析 3.解决方案 4.拓展知识 4.1 limit查询优化 4.2 limit与order by结合使用 5.小结 1.问题场景 新上线一个交易记录导出功能,逻辑很简单:根据查询条件,导出对应的数据.由于数据量比较大,在查询数据库时采用了分页查询,每次查询1000条数据. 自测正常,测试环境正常,上线之后运营反馈导出的数据有重复记录. 原本是以为业务逻辑问题,重新Review了一遍代码,依旧未找到问题原因.最后只好把SQL语句拿出来单独执行,导出数据,对比发现竟然是

随机推荐