通过变量赋值来查询的

日期:2019-11-24编辑作者:北京pk10官网-数据库

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

先建表

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

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

insert into test values ,;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()排序函数的用法和注意 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文由北京pk赛车官网下载发布于北京pk10官网-数据库,转载请注明出处:通过变量赋值来查询的

关键词:

这些基本的数据库语言是很容易上手使用的

最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了。在使用的过程中还是出现...

详细>>

但是没有找到配置的方法

介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今...

详细>>

下面接着给大家介绍mysql 5.6密码强度插件使用

mysql 5.6对密码的强度进行了加强,推出了 validate_password插件。支持密码的强度要求。 安装办法: plugin-load=validate_pa...

详细>>

与 SQL server 中的所有其他类型的页一样

数据页是含有已加多到数据库表中的客户数据的布局。 如前所述, 数据页有二种, 每一种都是分歧的格式存款和储蓄数...

详细>>