MySQL:如何按字段对行进行排序并将另一个字段分配给计数器?

Flu*_*ffy 5 mysql

想象一下,有一个包含以下内容的表:

 x      y     z
 aa     5     null
 bb     2     null
 cc     5     null
 dd     1     null
Run Code Online (Sandbox Code Playgroud)

我想按行排序y并为z分配一个自动递增的字段,所以在这种情况下,最终结果(更改的表)将是

 x      y     z
 dd     1     1
 bb     2     2
 aa     5     3
 cc     5     4
Run Code Online (Sandbox Code Playgroud)

要么

 x      y     z
 aa     5     3
 bb     2     2
 cc     5     4
 dd     1     1
Run Code Online (Sandbox Code Playgroud)

我怎么做?

所以要说清楚,我想改变表格,而不是把这些东西转化为代码.

根据要求,http://sqlfiddle.com/#!2/cd610/1

jue*_*n d 2

update your_table t1
inner join
(
  select id, @rank := @rank + 1 as r
  from your_table, (select @rank := 0) r
  order by y
) t2 on t2.y = t.y
set z = r
Run Code Online (Sandbox Code Playgroud)

SQLFiddle 演示