对,我有一个包含字段的表:id,title,description,keywords和link。在表格中,我有数百个搜索引擎网站。我在这一部分正在努力。 id被设置为自动递增,我希望能够添加一行代码,将其自身嵌入到表中,在某个地方的中间,并在整个表中调整id标记(自动增量)。因此,如果我要将“Google”添加到ID“81”,81将转到82以适应它。有没有办法用SQL做到这一点?
答案 0 :(得分:0)
AUTO_INCREMENT
并不意味着以您想要的方式使用它。它主要是对表中任何一行的引用,主要目的是在其他表中用作外键。如果您希望以某种方式对行进行排序,则应该有另一个可以影响的列。
编辑:
但是现在以防万一你真的想重新编号并且你的自动增量ID没有在任何其他表中使用以供参考,没有人正在使用该表你可以
也许就像这样
alter table mywebsitetable drop column id;
alter table mywebsitetable add column id bigint;
update mywebsitetable set id = 81 where websitename = 'Google';
... do more numbering as you like and this does give numbers to all the other rows:
alter table ify.test modify id bigint primary key auto_increment;
如果你想保留所有的ID,你甚至可以添加另一列来保存ID列,用两个更新语句复制它们。 81之前的ID的一次更新和81之后的另一次更新,其中ID正在递增。然后添加删除并添加列,从保存列复制ID,删除保存列,添加谷歌并再次打开auto_increment。但是当你的表很大并且我不推荐这个时需要很长时间,因为正如我之前所说的那样,自动增量不是用于排序或者如同一个注释中提到的那样,auto_increment不应该被视为传播中的行片材。