Mysql ID重新排列

我们经常会遇到,在删除数据库某条记录时,原来的ID排序会有间隔,比如删除了ID为8的数据,这个表的ID排序就会从7直接到9,

那我们如何解决这个ID重新排列的问题呢?

只需一下三步:

1.删除这个表的ID

ALTER TABLE `table_name` DROP `id`;

2.重新建立ID字段

ALTER TABLE `table_name` ADD `id` MEDIUMINT( 8 ) NOT NULL FIRST;

3.为这个字段设置新的主键,并且自动增长

ALTER TABLE `table_name` MODIFY COLUMN `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);

Mysql ID重新排列,布布扣,bubuko.com

时间: 2024-12-21 00:18:44

Mysql ID重新排列的相关文章

mysql 修改字段排列位置

修改字段排列位置 ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2 参数说明 FIRST,可选参数 将字段1,修改为表的第一个字段. AFTER 字段名2 将字段1,插入到字段2的后面. 将数据表grade的username字段,修改未表的第一个字段 将数据表grade的id字段,插入到grade字段后面

MySQL ID排序乱了的解决办法

可能在整理表中数据的时候删除了某一行数据,导致ID空缺,下面是我用到的解决办法:(请先备份,MySQL备份方法见 MySQL->MySQL备份) 使用ALTER DROP删除原有的ID字段: ALTER TABLE 表名 DROP 字段名 添加新的ID字段: ALTER TABLE 表名 ADD ID 字段类型 [自动增长] [主键] 这里可以用到 FIRST 或者 AFTER 来控制新添加字段的位置: 例如添加到表的第一例: ALTER TABLE 表名 ADD ID 字段类型 [自动增长]

MYSQL查找从小到大排列第90%个位置的数据

方法一(存储过程实现): beginDECLARE cnt INT DEFAULT 0;select count(*) into cnt from user;set cnt = round(cnt*0.9)-1;select * from user limit cnt, 1; end 方法二(直接查询,,只有查询权限的时候可以考虑): 这种方法也是解决mysql limit后面不支持变量的问题 SELECT COUNT(*) INTO @cnt FROM cmb_loading_count_20

CoroSync + Drbd + MySQL 实现MySQL的高可用集群

Corosync + DRBD + MySQL 构建高可用MySQL集群 节点规划: node1.huhu.com172.16.100.103 node2.huhu.com172.16.100.104 资源名称规划 资源名称:可以是除了空白字符外的任意ACSII码字符 DRBD设备:在双节点上,此DRBD设备文件,一般为/dev/drbdN,主设备号147 磁盘:在双方节点上,各自提供存储设备 网络配置:双方数据同步所使用的网络属性 DRBD从Linux内核2.6.33起已经整合进内核 1.配置

MySQL学习笔记

第一章 数据库的建立 1.mysql>PROMPT 标识符名 //修改标识符 常用:mysql>PROMPT \[email protected]\h \d \u:当前用户 \h:服务器名称 \d:当前打开的数据库 MySQL语法规范: ·关键字与函数全部大写 ·数据库名.表名全部小写 ·SQL语句必须以‘;’结尾 2.mysql>USE x; //使用x数据库 3.mysql>CREATE DATABASE t1 CHARACTER SET = utf8;//创建数据库t1,编码

MySQL学习笔记-操作数据表中的记录

MySQL学习笔记-操作数据表中的记录 1.插入记录 INSERT INSERT [INTO] tbl_name [(col_name,...)] {VAULES|VALUE} ({expr|DEFAULT},...),(...),... 例,插入单条记录: mysql> USE testDatabase changed mysql> CREATE TABLE users(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,   

MySql查询结果按照指定顺序排序

Mysql这功能做的很好用啊!! 让查询结果按照指定顺序排序 ---------------------------------------------------------------------- 表结构如下:mysql> select * from test;+----+-------+| id | name  |+----+-------+|  1 | test1 ||  2 | test2 ||  3 | test3 ||  4 | test4 ||  5 | test5 |+---

一天一个mysql函数(二) FIND_IN_SET()

in和FILD_IN_SET() 的区别: select id, list, name from table where FIND_IN_SET( 'daodao' , list) 所以如果list是常量(如:('libk', 'zyfon', 'daodao')),则可以直接用IN, 否则要用FIND_IN_SET()函数 FIND_IN_SET(str,strlist)假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间 .一个字符串列表就是

MySQL自增列的步长问题

唯一索引和联合唯一 外键的变种 SQL数据行的增删改查 视图 触发器 函数 存储过程 事务 游标 动态执行SQL(防SQL注入) 1.MySQL自增列的步长问题: 1.基于会话级别(单次登陆状态下): show session variables like 'auto_inc%';    #查看自增长的默认步数,一般为1 set session auto_increment_increment=2;    #设置自增长会话步长为2 set session auto_increment_offse