Mysql 按顺序更新列的psql查询或函数

Mysql 按顺序更新列的psql查询或函数,mysql,psql,Mysql,Psql,我有一张“学生”表,如下所示: Name | Number --------+------- john | 1 Jessy | 2 darine | 3 Prince | 5 queeny | 7 更新后,表格应如下所示: Name | Number --------+------- john | 1 Jessy | 2 darine | 3 Prince | 4 queeny | 5 我希望您使用的是MYS

我有一张“学生”表,如下所示:

Name    | Number
--------+-------
john    | 1  
Jessy   | 2  
darine  | 3  
Prince  | 5  
queeny  | 7  
更新后,表格应如下所示:

Name    | Number
--------+-------
john    | 1  
Jessy   | 2  
darine  | 3  
Prince  | 4  
queeny  | 5  

我希望您使用的是MYSQL数据库。尝试下面的查询

UPDATE students 
INNER JOIN (
    SELECT name, @num:=@num+1 row_number FROM students, (SELECT @num:=0) n
) nums
SET number = nums.row_number
WHERE students.name = nums.name;

如果表中有主键,则用主键替换
WHERE students.name=nums.name
,因为name可以有重复的值。

ORDER BY
子句?你试过什么?请分享你的代码。这是一个简单的排序任务update Students set Number=nextval('Number_sequence');但是out put不是预期的
SELECT*FROM Students ORDER BY Number ASC
我想更新顺序表中的列没有顺序,因此插入数据的顺序并不重要。保证查询顺序的唯一方法是使用
orderby
子句。这在postgresql中很好,但在mysql中不起作用。我已经发布了mysql的查询。
UPDATE students 
INNER JOIN (
    SELECT name, @num:=@num+1 row_number FROM students, (SELECT @num:=0) n
) nums
SET number = nums.row_number
WHERE students.name = nums.name;