我有多个表,这些表在迁移后没有索引或主键。
在某些表中有9149个条目,并且已将大约10个新条目的ID设为0。
由于具有相同ID的多个条目,我无法提供主键,并且由于没有主键,我无法通过单击进行编辑。我不知道该怎么办。
现有的最高职位ID号是9149。
有人可以给我重写从9150以上的顺序号吗?
答案 0 :(得分:0)
这应该很简单:
ALTER TABLE wp_posts ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
此命令将名为id
的列作为表的第一列添加,并使其成为主键。由于该列启用了自动递增选项,因此MySQL将自动为每个记录分配一个数字。
这是一个 demo on DB Fiddle ,它演示了原理:
create table mytable (val int);
insert into mytable values(50);
insert into mytable values(50);
insert into mytable values(51);
alter table mytable add id int not null auto_increment primary key first;
select * from mytable;
| id | val |
| --- | --- |
| 1 | 50 |
| 2 | 50 |
| 3 | 51 |
答案 1 :(得分:0)
在这里,我使用一个变量来保存最大id,然后使用该变量来更新id = 0的行
SET @rownum = (SELECT MAX(id) FROM test)
UPDATE test SET id =
(SELECT @rownum := (@rownum + 1))
WHERE id = 0