Mysql row number()排序函数的用法和注意

 更新时间:2016年07月01日 15:29:06   作者:神崎橙  
这篇文章主要介绍了Mysql row number()排序函数的用法和注意 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的。在sql server 使用惯了,习惯了使用row_number() 函数进行排序,但是mysql 确没有这样一个函数。然后找到了po主写的一篇 文章。通过变量赋值来查询的。(PS 我测试的版本是mysql 5.6)

先建表

CREATE TABLE `test` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Col1` varchar(50) DEFAULT NULL,
`Col2` varchar(50) DEFAULT NULL,
`Col3` int(11) DEFAULT NULL,
`Col4` float DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 

然后插入测试数据,使用po主介绍的方法来测试

insert into test(Col1,Col2,Col3,Col4) values (1,2,3,4),(1,2,6,5),(1,2,7,8),(1,"激发",5,7);
delimiter //
select @row:=case when @row is null then 1 else @row+1 end as RNr, 
ID,Col1,Col2,Col3,Col4 from test ;
//
delimiter ; 

结果查询出结果是

查询出来的记过,Rnr为什么都是1 呢?因为对于本次查询来说,@row 这个变量的值,一直都是null ,所以根据case 的判别式来看的话,就只能是1 了。引起了这种现象。但是再执行,就正常的了,我们将同样的脚本

再执行一次,查出来应该就是2345了

测试验证确实如此,由此可见。变量在本次会话里面是一直存在的,并且每次会沿用,所以就出现前面的那种情况。

其实对应的解决方法也很简单,既然因为每个会话都会用同一个值,那么只需要在开始的时候赋初值就可以解决问题了,比如我们这个例子在开始的时候将 set @row = 0; 加上这句,那么每次执行,都会先赋初值,当然就可以得到一致的执行效果了。

这个测试告诉了我,在这个数据库里面,控制变量初始值hin重要。

以上所述是小编给大家介绍的Mysql row_number()排序函数的用法和注意 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • MySql数据库查询中的特殊命令

    MySql数据库查询中的特殊命令

    本文给大家介绍了MySql数据库查询中的特殊命令,包括mysql的安装,特殊查询语句,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • MySQL 如何修改root用户的密码

    MySQL 如何修改root用户的密码

    这篇文章主要介绍了MySQL 如何修改root用户的密码,帮助大家更好的使用MySQL,不用担心忘记密码,感兴趣的朋友可以了解下
    2020-09-09
  • 探讨MySQL 约束下的查询功能

    探讨MySQL 约束下的查询功能

    这篇文章主要介绍了探讨MySQL 约束下的查询功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • MySQL查看表和清空表的常用命令总结

    MySQL查看表和清空表的常用命令总结

    这篇文章主要介绍了MySQL查看表和清空表的常用命令总结,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • linux配置mysql数据库远程连接失败的解决方法

    linux配置mysql数据库远程连接失败的解决方法

    这篇文章主要为大家详细介绍了linux配置mysql数据库远程连接失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • php mysql连接数据库实例

    php mysql连接数据库实例

    这篇文章主要介绍了php mysql连接数据库实例,需要的朋友可以参考下
    2016-09-09
  • mysql8.0.14.zip安装时自动创建data文件夹失败服务无法启动

    mysql8.0.14.zip安装时自动创建data文件夹失败服务无法启动

    这篇文章主要介绍了mysql8.0.14.zip安装时自动创建data文件夹失败,导致服务无法启动的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • MySQL数据库表内容的增删查改操作实例详解

    MySQL数据库表内容的增删查改操作实例详解

    对于删除操作来说,是将表单个或者多个数据进行删除,而截断则是对整个表进行操作,会将整个表数据都清除,本文给大家介绍MySQL数据库表内容的增删查改操作大全,感兴趣的朋友一起看看吧
    2025-04-04
  • Mysql常见的慢查询优化方式总结

    Mysql常见的慢查询优化方式总结

    优化是一项复杂的任务,因为它最终需要对整个系统的理解,下面这篇文章主要给大家总结介绍了关于Mysql常见的慢查询优化方式,文中介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MySQL 排序规则简介

    MySQL 排序规则简介

    排序规则是指对指定字符集下不同字符的比较规则,有明显的体征体现,如两个不同的字符集不能有相同的排序规则两个字符集有一个默认的排序规则有一些常用的命名规则,接下来通过本文详细介绍MySQL 排序规则,需要的朋友可以参考下
    2023-09-09

最新评论