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

Win8电脑系统出现蓝屏故障代码0x00000019的解决办法

SQL Server 2005附加数据库时Read-Only错误的解决方案

js浮点数保留两位小数点示例代码(四舍五入)

jQuery实现鼠标划过添加和删除class的方法

css实现叶子形状loading效果

Linux下常用的一些解压缩命令汇总

Android下拉列表(Spinner)效果(使用C#和Java分别实现)

网页从弹窗页面单选框传值至父页面代码分享

Android气泡效果实现方法

javascript正则表达式中分组详解

Windows 10 10134手机版运行画面曝光

C#实现根据数字序号输出星期几的简单实例

symfony2.4的twig中date用法分析

MYSQL拒绝访问报错not allowed to connect

mysql排序两位数_MySQL_Mysql row number()排序函数的用法和注意,虽然使用不多,但是也有情况 - phpStudy...相关推荐

  1. mysql每一行数据类型_MySQL_MySQL编程中的6个实用技巧,每一行命令都是用分号(;)作为 - phpStudy...

    MySQL编程中的6个实用技巧 每一行命令都是用分号(;)作为结束 对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的 ...

  2. php时间转两位数年份,PHP常用时间函数资料整理

    PHP常用时间函数资料整理 PHP是一种HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言.这篇文章主要介绍了PHP常用时间函数资料整理的相关资料,需要的朋友可以参考下. php ...

  3. mysql 按照两个字段之和进行排序

    SELECT *,zan_num+fake_zan_num show_zan FROM `tf_news` order by show_zan desc TP实现 $news = M('news'); ...

  4. 【数据结构-排序】3.图解选择排序两种实现(简单选择排序/堆排序)

    简单选择排序(选择排序) 排序思想 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾. 以此类推,直到所有元素 ...

  5. MySql计算两个日期时间的差函数

    第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. WEEK. MONTH. QUART ...

  6. js小白操作:判断空值、判断数组最大最小值、判断map是否为空、字符串转int、取float型小数点后两位数、判断数组中是否包含某个对象

    js小白操作:判断空值.判断数组最大最小值.判断map为空的情况.字符串转int Js基础操作 一.判断空值 undefined 和 null 二.判断map是否为空 三.取数组最大最小值 1.使用 ...

  7. MySql计算两个日期的时间差函数

    MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...

  8. mysql加减分钟_mysql加减时间-函数-时间加减

    select timediff('23:40:00', '18:30:00'); --两时间相减 SELECT substring( timediff('23:40:00', '18:30:00'), ...

  9. mysql相隔多长时间_Mysql 计算时间间隔函数

    mysql计算时间差函数 MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了. MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法 ...

最新文章

  1. POJ--2104 K-th Number (主席树模版题)
  2. akb48_AKB48偶像毕业后都去做什么了?日本前成员亲述转型艰辛
  3. PAT (Advanced Level) 1070. Mooncake (25)
  4. Wireshark图解教程
  5. 运行第一个vue.js文件
  6. IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
  7. Linux 查看ssh登录日志 ssh登录记录
  8. android 异步加载图片缩略图
  9. 一个虚拟社交公司的融资历程
  10. c语言编程n元一次方程,解n元一次方程
  11. 让vim在utf-8的local下打开 gbk 文件
  12. 2019年最新整理:1000多套完整微信小程序源码不同行业源码集合
  13. 华为跑了?深圳终究留不住华为
  14. 【高中数学教资】教案设计通用模板
  15. nextcloud 修改 logo
  16. PHP 微信支付v3签名生成
  17. 英里 英尺 英寸的换算
  18. Deep K-SVD Denoising
  19. flex 联机游戏开发 - 四国军棋游戏:(一)引子
  20. hualinux ros 1.3:基础-RouterOS安装

热门文章

  1. java开发事故如何处理_记一次缓存事故
  2. matlab 矩阵jocobi迭代_高校MATLAB被禁用,掀起中国本土软件脆弱的冰山一角
  3. php封装的数据库操作文件夹,PHP中对数据库操作的封装_php
  4. 线性回归 逻辑回归
  5. php strlen 线程安全,浅析PHP中strlen和mb_strlen的区别
  6. springboot 静态资源访问,和文件上传 ,以及路径问题
  7. jdbc-------JDBCUtil类 工具类
  8. JavaScript里面的居民们1-数据
  9. 51 nod 1522 上下序列——序列dp
  10. 快速搭建redis单机版和redis集群版