Mysql更新ID

时间:2014-02-10 15:53:48

标签: mysql

有没有办法更新表中的所有id以从1重新启动。

我有:

id  |  name
-------------
 3  | whatever
 23 | whatever
 31 | whatever
 13 | whatever
 45 | whatever

我想:

id  |  name
-------------
 1  | whatever
 2  | whatever
 3  | whatever
 4  | whatever
 5  | whatever

谢谢

2 个答案:

答案 0 :(得分:1)

完全同意以上所述,这样做是个坏主意,但如果你真的想这样做另一种方法: -

UPDATE some_table
INNER JOIN 
(
    SELECT a.id, COUNT(b.id) AS seq
    FROM some_table a
    INNER JOIN some_table b
    ON b.id <= a.id
    GROUP BY a.id
) Sub1
ON some_table.id = Sub1.id
SET some_table.id = seq

答案 1 :(得分:0)

IHMO,这是一个危险的操作。

首先,您必须确保您的ID没有外键指向它们。

第二个,仅使用名称字段,您无法重新排列ID,因为所有行的名称都相同。

所以你必须获得另一个领域来区分你的角色。

如果您通过了上述所有步骤,则可以编写查询来更新您的ID。在MySql中,您无法使用子查询编写更新以指向同一个表,因此您必须使用存储查找的临时表(OLD_ID,NEW_ID)。

告诉我它是否正常或您需要更多信息。