2012-08-10 71 views
0

对,我有一个带有字段的表:标识,标题,描述,关键字和链接。在表格中,我有数百个搜索引擎的网站。尽管在这一部分我很挣扎。该ID设置为自动增量,我希望能够添加一行代码嵌入自己的表,在中间某处,与id标记(自动增量)在整个表中进行调整。所以,如果我想添加'谷歌'ID'81',81将会去82来适应它。有没有办法用SQL来做到这一点?如何将此行添加到此表中,而不会影响自动增量

+1

我很困惑。为什么80会变成79?难道你不想仅仅从81开始增加一切吗? – 2012-08-10 16:38:36

+0

我也从他想完成的事情中获得。 – edhedges 2012-08-10 16:38:56

+1

不要将数据库视为与Excel电子表格相同的数据库。 – 2012-08-10 16:39:24

回答

0

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

编辑:

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

  • 删除ID列
  • 添加ID列没有AUTO_INCREMENT
  • 更新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。然后添加下拉菜单并添加列,复制保存列中的ID,删除保存列,添加google并再次打开auto_increment。但是这会花费很长时间,当你的表很大,我不建议这样做,因为正如我之前所说的,自动增量并不意味着排序或如上面提到的一个评论,auto_increment不应该被视为像一个传播中的行片。

相关问题