有没有办法更新表中的所有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
谢谢
答案 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)。
告诉我它是否正常或您需要更多信息。