如何在不丢失数据的情况下自动增加该表?

问题描述

| 我的活动数据库中有一个表,其中包含数千条记录。 今天早上跟踪一个错误,我发现表\“ id \”列未设置为auto_increment,所以我有1000条ID = 0的记录。 :( MysqL>解释Feed_items; + -------------- + -------------- + ------ + ----- + ------ --- + ------- + |领域|类型空|关键认值|额外| + -------------- + -------------- + ------ + ----- + ------ --- + ------- + | id | int(11)|否| | 0 | | | Feed_id | int(11)|是的MUL | NULL | | |标题| varchar(255)|是的| NULL | | |描述|文字|是的| NULL | | | item_link | varchar(255)|否| | NULL | | | item_updated |日期时间|是的| NULL | | | item_id | varchar(255)|是的| NULL | | | created_at |日期时间|是的| NULL | | | Updated_at |日期时间|是的| NULL | | | is_hidden | int(11)|是的| 0 | | + -------------- + -------------- + ------ + ----- + ------ --- + ------- + 奇怪的是,较旧的记录似乎已自动递增。因此,我的记录中有一半具有预期的ID,其中一半没有 我要做的是将此列设置为auto_increment,然后运行执行以下操作的语句: 接受id为0的所有Feed_items,由created_at ASC排序 对于这些项目,我想将其ID设置为上一个项目的ID + 1 我对sql不太热衷,也不想破坏实时服务器上的数据。 有人可以建议吗?     

解决方法

        根据表的大小以及使其脱机的可能性,您可以简单地创建具有相同字段模式的第二张表并插入选择数据...
INSERT INTO _YourSecondTableName_  (feed_id,title,description,item_link,item_updated,item_id,created_at,updated_at,is_hidden)  
SELECT feed_id,is_hidden  
FROM _YourFirstTableName_  
ORDER BY created_at ASC
然后可以删除原始表并重命名新表...