如何更新mysql表,我想为现有表重新生成序列号

时间:2011-02-03 17:55:00

标签: mysql sql-update

我有大约500条记录的mysql表,以及我根据requiremens修改了我的表的方法。但是我有一个表格,其中包含(sale_id,cust_id,Sales_desc bla bla)

等字段

我已经为所有500个,,,,,做了一个值('1')的sale_id行,但是我想知道你们的内容,任何人都可以告诉我如何更新sale_id 1到500 ,,, ,,我的意思是说我希望这一行应该从1开始到N ,,,,,但是这个表中已经有一些数据,,,,,我只是想用序列号替换现有的sale_id值(1,2 ,3,4,5- .... n)的 PLZ帮我解决了这个问题......我在等.......

沙希德 emsoftware.in

2 个答案:

答案 0 :(得分:3)

这可以解决问题:

UPDATE tableName, (SELECT @id := 0) dm
SET sale_id = (@id := @id + 1)

答案 1 :(得分:1)

听起来你的表中的sale_id应该是表中的主键并设置为自动递增。既然听起来表中已经没有很多数据了,为什么不用sale_id设置重新创建它来为你处理这个,将数据插入新表然后重命名表来淹没它们?

CREATE TABLE `TableNew` LIKE `TableOld`;
ALTER TABLE `TableNew` MODIFY COLUMN `sale_id` INTEGER  NOT NULL DEFAULT 0 AUTO_INCREMENT;
INSERT IGNORE INTO `TableNew` (cust_id, Sales_desc, bla, bla) SELECT cust_id, Sales_desc, bla, bla FROM `TableOld`;
RENAME TABLE `TableOld` to `TableOldBackup`;
RENAME TABLE `TableNew` to `TableOld`;

注意:在此答案中给出的insert语句中,您必须指定要复制的所有字段,并从插入中排除sale_id。这样mysql将使用自动递增的值填充sale_id。