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

Name,   Number

Joe     Null
Michael Null
Moses   Null

我想用1-3的序列号来更新这个数字,所以它看起来是这样的:

Name,   Number

Joe     1
Michael 2
Moses   3

在SQL for Mysql中,如何在一个SQL命令中实现这一点

推荐答案

SET @rank:=0;
update T
set Number=@rank:=@rank+1;

UPDATE

另一种方式是一句话

UPDATE T
JOIN (SELECT @rank := 0) r
SET Number=@rank:=@rank+1;

Mysql相关问答推荐

左联接重复问题

如何从MySQL数据库中提取入职第一个月的工作天数?

SQL Select 最大值和平均值

根据时间戳分组删除

特定时间段内每个客户的运行总计

将 Cloud Function (nodejs) 连接到 CloudSQL mySQL 数据库

SQL - 基本的内部连接查询

根据 Power Query 中的条件替换值

Mysql时间序列数据的最小值和最大值

如何在 MySQL 中使用从 SELECT IF 返回的布尔值

如何使用 express.js 和 react.js 删除连接表中的元素和关联元素

多个驱动器上的 MYSQL 数据

MySQL 每组最大 n 只适用于多行

基于 3 个条件 Select 3 行的最佳 MySQL 索引和查询

如何过滤表格,以便它显示最新的数据?

使用带有 ELSEIF 和 ELSE 的 3 列更新问题

字符ي和ی以及波斯语的区别 - Mysql

在 MySQL 中删除数据库返回删除数据库错误:66

Mysql:创建表时将DATETIME的格式设置为'DD-MM-YYYY HH:MM:SS'

为什么 GRANT 在 MySQL 中不起作用?