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

 更新时间:2023年07月17日 17:08:01   作者:charles·wang  
这篇文章主要介绍了如何使Mysql自动生成序号列,序号自动增长问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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 :

  • 在SELECT 得到每一行结果集都会先自增1 ;
  • 在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存储过程生成编号自增

例如

编号1,2,3,4,5…n依次递增1

CREATE PROCEDURE khbh1(out khbh varchar(255))
begin
DECLARE n int;
declare lsh int;
– 查询系统流水表中有多少条数据
select count(*) into n from SKT176;
– 如果为0,把1赋值给流水号,再将系统编号插入进系统流水表中。否则查询系统流水表中最大的起始编号,依次往上+1
IF n=0 then
set lsh =1;
insert into 系统流水表(起始编号) values(lsh);
else
select Max(起始编号) INTO lsh from 系统流水表;
SET lsh=lsh+1;
update 系统流水表 SET 起始编号=lsh where id=1;
end if;
– 输出编号1,2,3,4,5,6…
set khbh=lsh;
end;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL数据库常用操作技巧总结

    MySQL数据库常用操作技巧总结

    这篇文章主要介绍了MySQL数据库常用操作技巧,结合实例形式总结分析了mysql查询、存储过程、字符串截取、时间、排序等常用操作技巧,需要的朋友可以参考下
    2018-03-03
  • 浅谈MySQL中drop、truncate和delete的区别

    浅谈MySQL中drop、truncate和delete的区别

    在MySQL中,drop、delete和truncate是用来删除表中数据或整个表的命令,本文主要介绍了MySQL中drop、truncate和delete的区别,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05
  • MySQL中ESCAPE关键字的用法详解

    MySQL中ESCAPE关键字的用法详解

    这篇文章主要介绍了MySQL中ESCAPE关键字的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL下载安装详情图文教程

    MySQL下载安装详情图文教程

    本文通过图文并茂的形式给大家介绍了MySQL下载安装详情,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • mysql 8.0.15 winx64解压版图文安装教程

    mysql 8.0.15 winx64解压版图文安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.15 winx64解压版图文安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • MySQL性能参数详解之Max_connect_errors 使用介绍

    MySQL性能参数详解之Max_connect_errors 使用介绍

    这篇文章主要介绍了MySQL性能参数详解之Max_connect_errors 使用介绍,需要的朋友可以参考下
    2016-05-05
  • MySQL数据库误删数据该怎么解决(这里有救!)

    MySQL数据库误删数据该怎么解决(这里有救!)

    在日常运维工作中,对于mysql数据库的备份是至关重要的,下面这篇文章主要介绍了MySQL数据库误删数据该怎么解决的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • mysql 触发器用法实例详解

    mysql 触发器用法实例详解

    这篇文章主要介绍了mysql 触发器用法实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • 内网ssh/mysql登录缓慢的解决方法

    内网ssh/mysql登录缓慢的解决方法

    本文介绍了“内网ssh/mysql登录缓慢的解决方法”,需要的朋友可以参考一下
    2013-03-03
  • Mysql常见的驱动程序使用

    Mysql常见的驱动程序使用

    MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,本文主要介绍了Mysql常见的驱动程序使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03

最新评论