如何使 Mysql自动生成序号列,序号自动增长

   在Oracle中有ROWNUM 这个功能,可以很方便的得到序列号。但是Mysql中始终没有实现这个功能的函数,那当我们需要的时候该怎么处理呢?

使用Msyql的自定义变量

1. 自定义变量放在FROM后面

   使用 @var 定义变量 ,这个变量定义是基于connection的。也就是当连接断开重连的时候,@var中的值会被清空,因此我们最好每次都给它一个初始值。

SELECT @i:=@i+1 AS '序号' , a.name FROM AREA a,(SELECT @i:=5) i 

变量 @i
   1. 在SELECT 得到每一行结果集都会先自增1
   2. 在FROM 后面的(SELECT @i:=5) 每次sql执行都会初始化变量@i的值为5

2. 自定义变量放在WHERE后面

   其实这个变量的初始化值并不一定非要放在FROM后面,也可以像下面这样。这是由于 sql的执行顺序决定的,在select 执行前 初始化变量即可

SELECT @a:=@a+1 AS '序号' , a.name FROM AREA a WHERE (SELECT @a:=5)

区别:
   在 WHERE 后面使用变量的时候, 不能初始化赋值0(WHERE (SELECT @a:=0)) ,这个是因为0在 WHERE 后面被认为是 false 。这样不能搜索到任何结果。

Mysql的执行顺序参考:Mysql书写规范 、Mysql的书写顺序执行顺序、Mysql使用技巧

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值