mysql有row_number函数吗?

mysql没有row_number函数。

oracle等数据库中可以方便的使用row_number函数,实现分组取组内特定数据的功能。但是MySQL中并没有引入类似的函数。为了实现这一功能,需要一些特别的处理。

row_number函数

函数是对分组之后的数据进行组内编号,效果如下:

由于新增了一列num,结合组内的排序,可以很方便的选取组内特定的数据。

MySQL中用到的知识case 语句

用户变量

实现步骤实现给每一行添加一个序号SET @row_number = 0;

SELECT

(@row_number:=@row_number + 1) AS num, s.id, s.name, s.age

FROM

student s;

这里利用用户变量实现数据自增分组编号SET @row_number=0, @customer_no=0;

SELECT

@row_number:=CASE

WHEN @customer_no = s.age THEN @row_number + 1

ELSE 1

END AS num,

@customer_no:=s.age AS stu_age,

s.id,

s.name

FROM

student s

ORDER BY

s.age;

customer_no是一个临时变量,每次查询都被赋值为age。而case中判断条件在customer_no赋值之前,其实就是判断当前行age值是否与上一行age值相同。当不相同时重新编号(输出1),从而实现了分组顺序编号的功能。效果与oracle中的row_number函数相同。

用户变量赋值的一种技巧

可以使用另一种方式替代用户变量的赋值SELECT

@row_number:=CASE

WHEN @customer_no = s.age THEN @row_number + 1

ELSE 1

END AS num,

@customer_no:=s.age AS stu_age,

s.id,

s.name

FROM

student s, (SELECT @row_number:=0, @customer_no:=0) AS t

ORDER BY

s.age;

这里将赋值放入select语句内部,效果一样。

更多相关知识,请访问 PHP中文网!!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql number函数_mysql有row_number函数吗?相关推荐

  1. mysql算法函数_mysql中的函数总结

    mysql中常用日期时间函数 MySQL服务器中的三种时区设置: ①系统时区---保存在系统变量system_time_zone ②服务器时区---保存在全局系统变量global.time_zone ...

  2. mysql 存储过程求和_MySQL - 存储过程和函数

    MySQL - 存储过程和函数 创建和调用存储过程 -- 创建stu_group()存储过程,封装 分组查询总成绩,并按照总成绩升序排序的功能 -- 注意: DELIMITER 必须写在一行的最前面, ...

  3. concat mysql sql注入_Mysql中用concat函数执行SQL注入查询的方法

    Mysql数据库使用concat函数执行SQL注入查询 SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示 ...

  4. mysql 处理文件函数_mysql数据处理与函数

    大纲 列的别名 concat()函数 算术运算 字符处理函数 日期时间函数 数值处理函数 聚集函数 1.列的别名 就像人的外号一样,列有时候不太好理解或者列名太长,可以给它起别名 如何使用呢?  使用 ...

  5. mysql 调用方差函数_MYSQL基本常用函数

    MYSQL基本常用函数 一.字符的操作函数 (ps:mysql中的索引都是从1开始的.) 1.instr(param1,param2) 返回子串第一次出现的索引,若找不到则返回0. param1填写操 ...

  6. mysql 存储过程 队列_mysql使用存储过程函数实现批量插入

    写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧... 废话不多说,我就直接上表结构啦哈,如下: cr ...

  7. mysql中日期函数_mysql中日期函数ADDDATE()函数用法大全

    摘要: 下文讲述mysql数据库中日期函数ADDDATE方法简介说明,如下所示: ADDDATE函数简介说明 ADDDATE函数是DATE_ADD函数的同义词,具有同样的功能, 其作用为:为指定的日期 ...

  8. mysql的时间比对函数_MySQL 笔记 —— 时间函数、时间比较

    整理下MySQL 日期时间函数及用法(5.6.*版本) 一.日期(date)相关 1.CURDATE().CURRENT_DATE().CURRENT_DATE: 同义,返回当前日期,如:2017-1 ...

  9. mysql substring用法_Mysql字符串截取函数SUBSTRING的用法说明

    函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...

最新文章

  1. 【生活】 戴尔XPS 插上耳机之后,说话没声音,麦克风失效 window10 系统
  2. STM32单片机工作日记
  3. return 返回值的问题
  4. 用英语回答问题 - 一个SAP开发人员为什么要练习双截棍
  5. vo listVO paggerHelper mapper使用原则
  6. React基础篇(五)css样式的使用
  7. slqite3库查询数据处理方式_绝活!十一个优质React Hook库, 收藏备用
  8. Python+sklearn决策树算法使用入门
  9. 06-03 Jenkins 节点管理(Linux)
  10. 让ajax更加友好,实时显示后台处理进度。
  11. [线性代数] 1.3 n阶行列式
  12. 盖世兔I9100刷机心得
  13. Integer与Int
  14. Material 的 Tiling 和 Offset
  15. GCC编译器中三个重要的函数
  16. Jrebel+springboot2.0 启动失败问题
  17. 解决CUDA error: no kernel image is available for execution on the device
  18. python入门爬取表情包
  19. Android——加速传感器(ACCELEROMETER)的应用
  20. 苏宁从面试到入职历险记

热门文章

  1. C代码编译成在android上的可执行程序
  2. C4996 “scanf“ 问题——初学者使用VS的拦路虎
  3. web前端后端的连接:Servlet简单演示
  4. 七 渐入佳境(7.4-7.10)
  5. Dapr 知多少 | 分布式应用运行时
  6. 国外数据采集的10个经典方法
  7. 微信小程序map的使用
  8. r java_R语言rJava包安装载入及JAVA环境配置
  9. HTC头显显示错误:头戴式显示器插入错误显卡
  10. 未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“xxx.Resources.resources”正确嵌入或链接到程序集...