问题分析

   Oracle中的伪列 ROWNUM 是一组递增的序列,在查询数据时生成,为结果集中每一行标识一个行号, 每条记录会因为输出的顺序不同而获得不同的逻辑编号;此自增长序列可以视作起始值为 1,以1为步长的递增的等差数列。MySQL中没有这个伪列的概念,但是有些业务场景需要这个自增长编号,所以,本文分享如何在MySQL中模拟生成一个自增长序列。

模拟自增长序列

  单表查询

  sql示例:

select (@i:=@i+5) as rownum, surname, personal_name from student, (select @i:=100) as init;

   解释: 上述sql中,@i:=100为自定义的初始值为100,表名init可以自定义;(@i:=@i+5)为递增规则,表示递增序列的步长为5,上述sql运行结果如下:

  当然一般不会这么用,简单的从1开始递增就行:

select (@i:=@i+1) as rownum, surname, personal_name from student, (select @i:=0) as init;

  多表关联查询

  多表关联查询跟单表查询类似,在关联查询后定义一个自增长序列即可:

select (@i:=@i+1) as rownum, A.surname, B.uname from student A left join user B on CONCAT(A.surname, A.personal_name) = B.uname, (select @i:=0) as init;

结束语

  本文分享在MySQL中,使用 (@i:=@i+1) 模拟Oracle中的伪列 ROWNUM,生成一个自增长序列。

  以上就是这篇文章的全部内容了,希望本文对大家的学习或者工作能带来一定的帮助,如有疑问请留言交流。Wiener在此祝各位生活愉快!工作顺利!

Reference

MySQL中自增长序列(@i:=@i+1)的用处及用法的更多相关文章

  1. MySQL中的insert ignore into, replace into等的一些用法小结(转)

    MySQL中的insert ignore into, replace into等的一些用法总结(转) 在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: ...

  2. mysql中tinyint、smallint、int和bigint类型的用法区别

    mysql中tinyint.smallint.int和bigint类型的用法区别: 在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127.无符号的范围是0到255(见官 ...

  3. MySQL中的insert ignore into, replace into等的一些用法总结

    在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` INT(11) NOT NULL AUTO_ ...

  4. mysql中多个left join子查询写法以及别名用法

    不多说 直接上语句   SELECT     a.id,     a.thumbNail,     a. NAME,     a.marketPrice,     a.memberPrice,     ...

  5. 关于MySql中自增长id设置初始值

    在MySQL数据库,设置了id为自增长类型,但由于程序还处于开发阶段,很容易的会产生错误数据,然后就直接删除了,可是id的自增长值没有跟着减少,这里提示: 如果表中数据没有用,直接删除了数据,自动增长 ...

  6. MySQL中自增长与锁

    在InnoDB存储引擎中,对于每个含有自增长值的表都有一个自增长计数器(auto-increment counter)当对含有自增长的计数器的表进行插入操作时,这个计数器会被初始化,执行如下的语句可以 ...

  7. 在MySQL中使用子查询和标量子查询的基本用法

    一.MySQL 子查询 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用.MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性.子查询没 ...

  8. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  9. mysql 中delete和trncate区别

    mysql中删除表记录delete from和truncate table的用法区别: MySQL中有两种删除表中记录的方法:(1)delete from语句,(2)truncate table语句. ...

  10. mysql中where和having子句的区别和具体用法

    1.mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having ...

随机推荐

  1. 最简单的方式:如何在wsl2上配置CDUA开发环境

    step0:序言 这篇文章可以帮助你以一个最为简单的方式迈出CUDA的第一步,从此一入CUDA深似海,从此头发是路人. 前提:你需要在Windows 11上: 电脑中有nvidia显卡以及驱动,由于w ...

  2. SVG path 标签根据两点和角度绘制弧线

    同步发布:https://blog.jijian.link/2020-04-14/svg-arc/ 由于功能受限,此处不能放 iframe 嵌入链接,如需看到实时效果,请移步 https://blog ...

  3. 启动workman stream_socket_server() has been disabled for security reasons

    启动workman报错 Workerman[start.php] start in DEBUG mode stream_socket_server() has been disabled for se ...

  4. StarRocks 升级注意事项

    前段时间升级了生产环境的 StarRocks,从 3.3.3 升级到了 3.3.9,期间还是踩了不少坑所以在这里记录下. 因为我们的集群使用的是存算分离的版本,也是使用官方提供的 operator 部 ...

  5. 【Maven】在 Idea 中使用 Maven

    在 Idea 中使用 Maven 1 在 Idea 中配置 Maven Idea 中也自带 Maven 插件,而且我们也可以给自带的 Maven 插件进行配置,所以我们可以使用自带的 Maven,也可 ...

  6. 【SpringMVC】概述

    SpringMVC 概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 MV ...

  7. Windows 鼠标右键失效

    突然有一天...小邋遢他变了... 哦不是...鼠标右键/键盘菜单键莫名其妙失效了. 解决办法 运行 regedit 打开注册表编辑器 依次展开 HKEY_CURRENT_USER\Software\ ...

  8. 实现Android键盘自适应

    实现Android键盘自适应 unit Unit13; interface uses System.SysUtils, System.Types, System.UITypes, System.Cla ...

  9. nodejs终端字符样式和进度条

    Nodejs为终端字符增加样式 只有黑白的色调对于比较复杂的命令行程序来说就显得太单调了,我们可以为命令行程序增加样式使得程序更加友好! 安装package: npm install -S chalk ...

  10. Spring解决创建单例bean,而存在线程不安全问题,的解决方案

    一.线程安全问题都是由全局变量.静态变量和类的成员变量引起的.若每个线程中对全局变量.静态变量和类的成员变量只有读操作,而无写 操作,一般来说,这个全局变量是线程安全的,反之线程存在问题 二.因为Sp ...