0

我有一个表,其结构如下。

create table test_table (id INT NOT NUll AUTO_INCREMENT
                         , name varchar(100),
                         primary key (id))ENGINE=INNODB
Select * from test_table;
id   name
1    a
2    b
3    c

现在我想将 id 增加一个数字让我们说 2 所以最终结果应该是

Select * from test_table;
id   name
3    a
4    b
5    c

我可以这样做的方法是,首先删除 PK 和自动增量,然后更新表:

update test_table set id=id+2;

另一种方法是制作一个没有 PK 和自动增量的临时表,然后将结果提取到主表。

有没有其他方法可以在不破坏表结构的情况下做到这一点?我正在使用 MYSQL。

4

2 回答 2

0

这是在 SQL 中更新表的查询:- 它的通用

UPDATE table_name SET column1=value, column2=value2,WHERE some_column=some_value;

请点击链接了解更多信息

更新查询

谢谢,帕万

于 2012-11-29T09:26:18.050 回答
0

在您的示例中,您需要先删除 PK 以id在更新过程中允许(临时)重复。为避免重复,您必须执行有序更新:

UPDATE test_table SET id = id + 2 ORDER BY id DESC;

这将更新最大值为idfirst 的记录,从而避免冲突。

显然,如果要减小 的值id,请使用“ ORDER BY id ASC”。

于 2012-11-29T08:58:17.113 回答