首页  >  文章  >  数据库  >  如何按升序对具有非连续值的 MySQL 主索引重新编号?

如何按升序对具有非连续值的 MySQL 主索引重新编号?

Patricia Arquette
Patricia Arquette原创
2024-10-25 11:26:30708浏览

How can I renumber a MySQL primary index with non-sequential values in ascending order?

为有序数据重新编号主索引

问题:

你有一个 MySQL 表其值未按顺序编号的主索引。如何按顺序(1、2、3、...)重新编号?

答案:

虽然可以使用其他方法,但这里有另一种方法不需要创建临时表。

解决方案:

执行以下SQL语句:

<code class="sql">SET @i=0;
UPDATE table_name SET column_name=(@i:=@i+1);</code>

解释:

  • 第一行将会话变量 @i 初始化为 0。
  • 第二行对名为 table_name 的表执行 UPDATE 查询。
  • 在 UPDATE 内查询时,SET 子句为主索引列 column_name 分配一个新值。
  • 新值是通过将会话变量 @i 加 1 来计算的。
  • 当查询执行时,@ i 变量不断递增,确保主索引值按顺序重新编号。

以上是如何按升序对具有非连续值的 MySQL 主索引重新编号?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn