У меня есть таблица, в которой есть группы записей, и я хочу сохранить порядок в таблице для этих записей, например
==========================
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