假设我有一个表(产品),每行有两行,一个索引(ID)编号为 1,第二个索引编号为 2。假设 ID1 行中的值被用户删除(通过内容管理界面)。
我希望下一个插入的值再次位于 ID 号为 1 的行中(替换已删除的值),而不是 ID 号为 3 的行中。
有没有办法在保持 ID 字段不变的情况下将值删除(和插入)到特定字段中?
假设我有一个表(产品),每行有两行,一个索引(ID)编号为 1,第二个索引编号为 2。假设 ID1 行中的值被用户删除(通过内容管理界面)。
我希望下一个插入的值再次位于 ID 号为 1 的行中(替换已删除的值),而不是 ID 号为 3 的行中。
有没有办法在保持 ID 字段不变的情况下将值删除(和插入)到特定字段中?
或者,您可以在特定行上运行更新语句;
update <table>
set <column>=<value> where ....
您可以在此处检查正确的语法:http: //www.w3schools.com/sql/sql_update.asp
如果您使用的是 auto_increment 列,我建议不要这样做。如果您想知道原因,请在此处查看我对这个问题的回答。
如果你真的坚持,你可以使用一个包含从 1 到任何数字的表格,然后加入它。
create table foo(id int, something varchar(30));
insert into foo values (1, 'a'), (3, 'b'), (5, 'c'), (6, 'd');
create table bar(minId int);
insert into bar values (1), (2), (3), (4), (5), (6);
insert into foo
select (
select MIN(minId) from foo right join bar on foo.id = bar.minId where foo.id IS NULL
), 'whatever'
;
select * from foo;
看到它在sqlfiddle中工作。
您应该在删除命令之后运行此命令
ALTER TABLE 表名 AUTO_INCREMENT = 1
它将重置自动增量计数器,您将获得所需的输出。