mysql将组内的保存顺序保存到子表

mysql将组内的保存顺序保存到子表,mysql,Mysql,我有一个包含多组记录的表,我想在表中保存这些记录的顺序,例如 ========================== group_id | bid | rank ========================== 1 | 10 | ? 1 | 12 | ? 2 | 4 | ? 2 | 5 | ? 2 | 3 | ? =======================

我有一个包含多组记录的表,我想在表中保存这些记录的顺序,例如

==========================
group_id  |  bid  | rank  
==========================
1         |  10   |  ?
1         |  12   |  ?
2         |   4   |  ?
2         |   5   |  ?
2         |   3   |  ?
==========================
是否有一些查询可以用来保存上表中的排名和出价顺序,从而使结果成为

==========================
group_id  |  bid  | rank  
==========================
1         |  10   |  1
1         |  12   |  2
2         |   4   |  2
2         |   5   |  3
2         |   3   |  1
==========================

您可以使用相关子查询来获得所需的排名

update demo a
join (
  select a.group_id,a.bid,
  (select count(distinct bid)
  from demo
  where a.group_id = group_id
  and a.bid > bid) + 1 rank
  from demo a
) b using(group_id,bid)
set a.rank =  b.rank

或者,如果你只是想选择它,你可以使用它

select a.group_id,a.bid,
(select count(distinct bid)
from demo
where a.group_id = group_id
and a.bid > bid) + 1 rank
from demo a

可能存在的副本