MySQL中自增长序列(@i:=@i+1)的用处及用法
问题分析
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)的用处及用法的更多相关文章
- MySQL中的insert ignore into, replace into等的一些用法小结(转)
MySQL中的insert ignore into, replace into等的一些用法总结(转) 在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: ...
- mysql中tinyint、smallint、int和bigint类型的用法区别
mysql中tinyint.smallint.int和bigint类型的用法区别: 在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127.无符号的范围是0到255(见官 ...
- MySQL中的insert ignore into, replace into等的一些用法总结
在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` INT(11) NOT NULL AUTO_ ...
- mysql中多个left join子查询写法以及别名用法
不多说 直接上语句 SELECT a.id, a.thumbNail, a. NAME, a.marketPrice, a.memberPrice, ...
- 关于MySql中自增长id设置初始值
在MySQL数据库,设置了id为自增长类型,但由于程序还处于开发阶段,很容易的会产生错误数据,然后就直接删除了,可是id的自增长值没有跟着减少,这里提示: 如果表中数据没有用,直接删除了数据,自动增长 ...
- MySQL中自增长与锁
在InnoDB存储引擎中,对于每个含有自增长值的表都有一个自增长计数器(auto-increment counter)当对含有自增长的计数器的表进行插入操作时,这个计数器会被初始化,执行如下的语句可以 ...
- 在MySQL中使用子查询和标量子查询的基本用法
一.MySQL 子查询 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用.MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性.子查询没 ...
- mysql中的where和having子句的区别
mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...
- mysql 中delete和trncate区别
mysql中删除表记录delete from和truncate table的用法区别: MySQL中有两种删除表中记录的方法:(1)delete from语句,(2)truncate table语句. ...
- mysql中where和having子句的区别和具体用法
1.mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having ...
随机推荐
- linux服务问题传文件连不上问题远程问题等
通过iptables相关命令实现防火墙的打开和关闭 1.首先可以在打开的终端使用iptables --help查看帮助使用命令: 2.查看防火墙状态:service iptables status(此 ...
- class com.ttsx.activity.item.dao.entity.RoleMenu ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. 报错解决办法
启动项目的时候,有几条WARN警告,如图: 引起原因: 是因为数据表实体类 没有di导致的. 例如: 解决办法: 增加实体id字段!或可以忽略!不影响程序!
- 市场教父 André Kostolany
大家好,我是 沃伦·爱德华·巴菲特(Warren Edward Buffett,1930 年 8 月 30 日 - ) 查尔斯·托马斯·芒格(Charles Thomas Munger,1924 年 ...
- .NET Core奇技淫巧之WinForm使用Python.NET并打包
前言 之前整了一个GZY.EFCoreCompare 的库,可以用做对比实体与数据库结构.感兴趣可以去看看,地址:GZY.EFCoreCompare 但是只能导出execl表格. 后来大佬用Pytho ...
- SetupFactory-脚本
1.写注册表 lResult = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\MapInfo\\MapX\\5.0") ...
- 关于IPMP
国际项目经理资质认证(International Project Manager Professional,简称IPMP)是国际项目管理协会(International Project Managem ...
- Ubuntu截屏工具推荐
Ubuntu截屏工具推荐 本篇博文推荐Ubuntu下的截屏工具Flameshot,可以作为Windows下Snipaste截图工具的平替. GitHub地址:https://github.com/fl ...
- QwQ-32B:用强化学习打造的AI推理黑科技 🚀
现在就体验 QwQ-32B:https://qwq32.com AI界的新星闪耀登场 小伙伴们,AI领域又出现重大突破啦!Qwen团队最新发布的QwQ-32B模型简直太厉害了!这个只有320亿参数的模 ...
- REST API从木愣到够呆
目前准备写一个API服务,遵循REST规范,因为自己也是第一次接触这玩意,所以就以自我的认知和理解过程来记录,留爪. ##在REST里什么叫资源? 拿数据表为例: 现在有三张表:(此表非彼婊) sch ...
- 《机器人SLAM导航核心技术与实战》第1季:第5章_机器人主机
<机器人SLAM导航核心技术与实战>第1季:第5章_机器人主机 视频讲解 [第1季]5.第5章_机器人主机-视频讲解 [第1季]5.1.第5章_机器人主机_X86与ARM主机对比-视频讲解 ...