MySQL сохранить порядок в группе для дочерней таблицы

0

У меня есть таблица, в которой есть группы записей, и я хочу сохранить порядок в таблице для этих записей, например

==========================
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
==========================
Теги:

1 ответ

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

демонстрация

  • 1
    это работает как шарм! благодарю вас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню