假设我有一个表(Product),每个表有两行,一个有索引(ID)编号1,第二个有索引编号2.让我们说ID1行中的值被用户删除(通过内容管理界面)。
我希望下一个插入的值再次位于标记为ID号1的行中(替换已删除的值),而不是ID号为3的行。
有没有办法在保留ID字段的同时将值删除(并插入)到特定字段?
答案 0 :(得分:0)
或者,您可以在特定行上运行更新语句;
update <table>
set <column>=<value> where ....
您可以在此处查看正确的语法:http://www.w3schools.com/sql/sql_update.asp
答案 1 :(得分:0)
如果您使用的是auto_increment列,我建议 NOT 。如果你想知道原因,请参阅我对这个问题here的回答。
如果你真的坚持,你可以使用一个包含从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中正常工作。
答案 2 :(得分:-1)
您应该在删除命令
之后运行此命令ALTER TABLE tablename AUTO_INCREMENT = 1
它将重置自动增量计数器,您将获得所需的输出。