0

对,我有一个包含以下字段的表格:id、title、description、keywords 和 link。在表中,我有数百个搜索引擎网站。我在本节中挣扎。id 设置为自动增量,我希望能够添加一行代码,将自身嵌入表中,在中间某处,id 标签(自动增量)在整个表中进行调整。因此,如果我将 'Google' 添加到 id '81',81 将转到 82 以适应它。有没有办法用 SQL 做到这一点?

4

1 回答 1

0

AUTO_INCREMENT并不是真的要以您想要的方式使用它。它主要只是对表中任何一行的引用,主要目的是用作其他表中的外键。如果你想让你的行以某种方式排序,你应该有另一列可以影响。

编辑:

但是现在以防万一您真的想重新编号并且您的自动增量 ID 没有在任何其他表中用于参考并且当前没有人使用该表,您可以

  • 删除 ID 列
  • 添加不带 auto_increment 的 ID 列
  • 将“Google”的 ID 更新为 81
  • 再次修改 ID 列为 auto_increment

也许像这样

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。然后添加 drop 并添加列,从 save 列复制 ID,删除 save 列,添加 google 并再次打开 auto_increment。但是,当您的表很大时,这将花费很长时间,我不建议这样做,因为正如我之前所说,自动增量并不意味着订购或正如那条评论中提到的那样,auto_increment 不应该被视为传播中的行床单。

于 2012-08-10T17:04:14.597 回答