时间:2023-10-29来源:系统城装机大师作者:佚名
在mysql中,设计表时设计的是一次递增,有时中间会删除一两行,导致ID不连续,这时,可以采用以下方法将ID改为连续的。
首先设置一个变量,初始值为0:
1 | set @r:=0; |
然后更新表中对应的ID列:
1 | update tablename set id=(@r:=@r+1) |
如果是插入,那就找一个记录多的表t1
1 2 |
set @r:=0; insert into t select @r:=@r+1 from t1 limit 0, 2000 |
讲述Mysql数据库如何实现字段递增赋值,解决门店重新连续编号问题。先看下应用场景。
有个门店信息表,包含门店名称、门店类型等信息,表结构如下:
1 2 3 4 5 6 |
CREATE TABLE `sale_zd_shops` ( `sid` bigint (20) NOT NULL AUTO_INCREMENT, `shop_id` varchar (32) NOT NULL COMMENT '门店ID,一串随机数' , `shop_name` varchar (100) NOT NULL COMMENT '门店名称' , `shop_nick` varchar (30) DEFAULT NULL COMMENT '门店别名' , `shop_type` int (11) DEFAULT NULL COMMENT '门店类型' , |
因为门店重名概率比较多,尤其业务员沟通时几乎用门店别名(简称)为主,重名概率更高,因此不利于业务沟通,为此提出对门店进行编号,简单起见1000开始往上递增编号,新表结构如下:
1 2 3 4 5 6 7 |
CREATE TABLE `sale_zd_shops` ( `sid` bigint (20) NOT NULL AUTO_INCREMENT, `shop_id` varchar (32) NOT NULL COMMENT '门店ID,一串随机数' , `shop_no` varchar (32) NOT NULL COMMENT '门店编号,1000往上递增' , `shop_name` varchar (100) NOT NULL COMMENT '门店名称' , `shop_nick` varchar (30) DEFAULT NULL COMMENT '门店别名' , `shop_type` int (11) DEFAULT NULL COMMENT '门店类型' , |
修改完表结构后,还需要进行shop_no数据处理,由于已经有好几万门店数据,不可能一一手工修改,为此需要sql 批处理。
1 2 3 4 |
set @rownum=10000; update sale_zd_shops SET shop_no = ( select @rownum := @rownum +1 as nid); |
处理结果
sid | shop_id | shop_no | shop_name | shop_type |
---|---|---|---|---|
1 | 8fasdffsaer | 10001 | 发广告古古怪怪 | 10 |
2 | 8fasd12fsaer | 10002 | 发广告挺有意义 | 20 |
3 | 4fasddfsaer | 10003 | 发广挺告有意义 | 20 |
– | – | – | – | – |
< |
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30