【问题标题】:Mysql update id [duplicate]Mysql更新ID [重复]
【发布时间】:2014-03-08 01:17:45
【问题描述】:

有没有办法更新表中的所有 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

谢谢

【问题讨论】:

标签: mysql


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    第二个,只有名称字段,您不能重新排列您的 ID,因为所有行的名称都相同。

    所以你必须获得另一个字段来区分你的cicle。

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

    如果可以,请告诉我,或者您需要更多信息。

    【讨论】:

      猜你喜欢
      • 2013-08-30
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 2012-08-28
      • 2013-07-18
      相关资源
      最近更新 更多