如何使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;

总结

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

相关文章

  • jdbc调用mysql存储过程实现代码

    jdbc调用mysql存储过程实现代码

    接下来将介绍下mysql存储过程的创建及调用,调用时涉及到jdbc的知识,不熟悉的朋友还要温习下jdbc哦,话不多说看代码,希望可以帮助到你
    2013-03-03
  • 浅谈Mysql中类似于nvl()函数的ifnull()函数

    浅谈Mysql中类似于nvl()函数的ifnull()函数

    下面小编就为大家带来一篇浅谈Mysql中类似于nvl()函数的ifnull()函数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • mysql特殊语法insert into .. on duplicate key update ..使用方法详析

    mysql特殊语法insert into .. on duplicate key update ..使用方

    在我们的日常开发中经常会遇到过这样的情景,查看某条记录是否存在,不存在的话创建一条新记录,存在的话更新某些字段,下面这篇文章主要给大家介绍了关于mysql特殊语法insert into .. on duplicate key update ..使用方法的相关资料,需要的朋友可以参考下
    2023-04-04
  • 探讨:MySQL中如何查询当前正在运行的SQL语句

    探讨:MySQL中如何查询当前正在运行的SQL语句

    本篇文章是对在MySQL中如何查询当前正在运行的SQL语句进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • mysql DBA:mysqladmin常用命令总结

    mysql DBA:mysqladmin常用命令总结

    mysqladmin是MySQL一个重要的客户端,最常见的是使用它来关闭数据库,除此,该命令还可以了解MySQL运行状态、进程信息、进程杀死等。本文介绍一下如何使用mysqladmin extended-status(因为没有"歧义",所以可以使用ext代替)了解MySQL的运行状态
    2014-03-03
  • Mysql导出数据的正确方法

    Mysql导出数据的正确方法

    想在Mysql命令行下导出数据库,但就是每天提示不那个错误,后来才知道其实mysqldump不是mysql命令,因此不能在Mysql命令行下导出。
    2011-05-05
  • MySql 如何实现无则插入有则更新

    MySql 如何实现无则插入有则更新

    这篇文章主要介绍了MySql 实现无则插入有则更新的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • mysql 8.0.15 下载安装详细教程 新手必备!

    mysql 8.0.15 下载安装详细教程 新手必备!

    这篇文章主要为大家详细介绍了mysql 8.0.15 下载安装详细教程,纯新手教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • MySQL调优之SQL查询深度分页问题

    MySQL调优之SQL查询深度分页问题

    本文主要介绍了MySQL调优之SQL查询深度分页问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值

    使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值

    MySQL数据表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都可以用这个ID唯一确定
    2011-08-08

最新评论