加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-12 02:35:27 所属栏目:MySql教程 来源:网络整理
导读:《Mysql应用Mysql row number()排序函数的用法和注意》要点: 本文介绍了Mysql应用Mysql row number()排序函数的用法和注意,希望对您有用。如果有疑问,可以联系我们。 虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的.在sql server 使用惯了

《Mysql应用Mysql row number()排序函数的用法和注意》要点:
本文介绍了Mysql应用Mysql row number()排序函数的用法和注意,希望对您有用。如果有疑问,可以联系我们。

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

先建表
MYSQL数据库

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主介绍的办法来测试
MYSQL数据库

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

结果查询出结果是
MYSQL数据库

MYSQL数据库

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

再执行一次,查出来应该就是2345了
MYSQL数据库

MYSQL数据库

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

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

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

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

《Mysql应用Mysql row number()排序函数的用法和注意》是否对您有启发,欢迎查看更多与《Mysql应用Mysql row number()排序函数的用法和注意》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读