使用序列号mysql更新列

Dej*_*ell 35 mysql sql sorting

我有一个列的表:(这只是一个例子,我有50K记录)

Name,   Number

Joe     Null
Michael Null
Moses   Null
Run Code Online (Sandbox Code Playgroud)

我用1-3中的序号来更新数字,所以它看起来像这样:

Name,   Number

Joe     1
Michael 2
Moses   3
Run Code Online (Sandbox Code Playgroud)

如何在一个SQL命令的SQL for Mysql中执行此操作

tri*_*san 105

SET @rank:=0;
update T
set Number=@rank:=@rank+1;
Run Code Online (Sandbox Code Playgroud)

UPDATE

一种陈述的替代方式

UPDATE T
JOIN (SELECT @rank := 0) r
SET Number=@rank:=@rank+1;
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,如果需要,你可以添加`ORDER BY NAME`到该更新:) (10认同)
  • @Bohemian:也许这是2011年以来的新版本,但实际上你不能添加`ORDER BY`,因为它是一个多表更新.[答案](/sf/answers/2756887311/)解决了这个问题. (3认同)

Nic*_*lbu 5

您可以尝试将其设置Number为 AUTO_INCRMENT 以便生成数字:

ALTER TABLE your_table MODIFY Number INT AUTO_INCREMENT
Run Code Online (Sandbox Code Playgroud)

除此之外,您可能需要:a) 存储例程 b) 应用程序代码