我是靠谱客的博主 淡定酒窝,最近开发中收集的这篇文章主要介绍mysql数据库id自增不连续_MySQL自增id不连续,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要修改的自增ID不是外键

解决article表主键id不连续

539a7cdeb693b8739965eca8590b689a.png

//先删除不连续的主键

ALTER TABLE article DROP COLUMN article_id;

//再重新建立自增的主键

ALTER TABLE article ADD article_id TINYINT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST;

985cbe9f8fd5538de2352e9fe06ab308.png

要修改的自增ID是外键

category表中category_id是article表的外键

7f050f63c5273f43f45bd74e2e3ff0c1.png

a53afafc818258904ca7c971c54a9d8c.png

这里解决category表id不连续不能先删除再重建

先获取category表行号

SELECT (@rowNum:=@rowNum + 1) AS 行号,a.* FROM (select category_id from category) as a,(SELECT @rowNum:=0) as b

c7cb538e693b98843cdf0cf2885c5e6a.png

将category表命名为 t1

将上面查询的表命名为 t2

使用MySQL UPDATE JOIN语句来执行跨表更新

先来看看内连接后的新表

select * from category as t1 JOIN (SELECT (@rowNum:=@rowNum + 1) AS 行号,a.* FROM (select category_id from category) as a,(SELECT @rowNum:=0) b) as t2 ON t1.category_id=t2.category_id

09ba067943351547de21cb95844d9ed5.png

UPDATE JOIN语法

UPDATE T1 [INNER JOIN | LEFT JOIN] T2

ON T1.C1 = T2. C1

SET T1.C2 = T2.C2,

T2.C3 = expr

WHERE condition

更新原来category表,用行号代替category_id

UPDATE category as t1 INNER JOIN (SELECT (@rowNum:=@rowNum + 1) AS 行号,a.* FROM (select category_id from category) as a,(SELECT @rowNum:=0) b) as t2

ON t1.category_id=t2.category_id

SET t1.category_id=t2.行号

WHERE t1.category_id=t2.category_id

1c07150e1f2e68f509b6ad239a4af755.png

第一次写博客,多多包涵

参考以下两篇博客:

链接: https://blog.csdn.net/lili625/article/details/80252420.

链接: https://blog.csdn.net/a_fighting_bear/article/details/90446379.

最后

以上就是淡定酒窝为你收集整理的mysql数据库id自增不连续_MySQL自增id不连续的全部内容,希望文章能够帮你解决mysql数据库id自增不连续_MySQL自增id不连续所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部