开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 913|回复: 9
收起左侧

[已解决] mysql求助

 关闭 [复制链接]
头像被屏蔽
结帖率:87% (82/94)
发表于 2023-8-24 03:47:28 | 显示全部楼层 |阅读模式   湖北省孝感市
8精币
mysql里面 比如ID 自增型的,
1
2
3
4
5
6

然后其中246被删除了
如何让他把剩下的自动重置ID为123呢

最佳答案

查看完整内容

246被删除了 后面的id重置为123? 那如果123没被删除的话 报错了怎么办?id不可以重复的

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:82% (18/22)
发表于 2023-8-24 03:47:29 | 显示全部楼层   北京市北京市
246被删除了 后面的id重置为123? 那如果123没被删除的话  报错了怎么办?id不可以重复的

点评

就算123id为空,也不可以自动重置,mysq没这功能, 你只能通过代码修改逻辑, 手动将id改为123, 然后进行插入   北京市北京市  发表于 2023-8-24 07:17

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (1/1)
发表于 2023-8-24 10:38:25 | 显示全部楼层   北京市北京市
mysql里面id不能自动重置排列,手动修改和删除话。ID对应的账号或者数据会变乱
回复

使用道具 举报

结帖率:100% (19/19)

签到天数: 13 天

发表于 2023-8-24 10:45:39 | 显示全部楼层   湖北省武汉市
mysql没有这种功能,需要手动写代码处理,而且你这需求也不太合理,单表还好,如果涉及到多表关联其他表用了这张表的id做外键关联,那改完岂不是全乱了?
回复

使用道具 举报

结帖率:100% (5/5)
发表于 2023-8-24 11:25:49 | 显示全部楼层   重庆市重庆市
提供思路,你可以试试 ,我没有实践, 以下操作相当于复制一份当前表,但不复制需要自增的字段,让系统重新编号。。
语句格式:
INSERT INTO b表(字段1,字段2,...) SELECT 字段1,字段2,... FROM a表
其中 字段1,字段2,...   包含除需要重置为自增型的ID字段外的所有字段。
按原理可以得到一个新的表 序号就自动编号为1 2 3 4 5了


回复

使用道具 举报

结帖率:62% (16/26)

签到天数: 1 天

发表于 2023-8-24 11:37:47 | 显示全部楼层   湖南省长沙市
可以做存储方式
回复

使用道具 举报

结帖率:62% (16/26)

签到天数: 1 天

发表于 2023-8-24 11:47:05 | 显示全部楼层   湖南省长沙市
通过alter table 表名 drop id;删除主键,通过ALTER TABLE 表名 ADD id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;在创建一个新的主键,这样的就可以重新排序。(如果你这张表的(id)关联了其它的表的话不建议你这样操作,会导致数据混乱)


回复

使用道具 举报

头像被屏蔽
结帖率:87% (82/94)
 楼主| 发表于 2023-8-24 16:49:31 | 显示全部楼层   湖北省孝感市
dbh 发表于 2023-8-24 11:47
通过alter table 表名 drop id;删除主键,通过ALTER TABLE 表名 ADD id INT NOT NULL PRIMARY KEY AUTO_INC ...

就让他重新排序下 没关联的 请问有一句sql执行的代码没  谢谢
回复

使用道具 举报

结帖率:62% (16/26)

签到天数: 1 天

发表于 2023-8-26 14:22:31 | 显示全部楼层   湖南省长沙市
快手 发表于 2023-8-24 16:49
就让他重新排序下 没关联的 请问有一句sql执行的代码没  谢谢

一句不行,你可以设置一个时间列用来记录数据的增加的时间,然后每次删除操作的时候都通过这个时间列重新排序,重置id。
set @mycnt = 0;
update 表名 set id= (@mycnt := @mycnt +1) order by 时间列 ASC;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表