Обновить ранг записей таблицы MySQL UPDATE rank

Есть в таблице поле order, которая служит для того, чтобы сортировать по этому полю выводимые записи. Так вот, если у записи изменить это поле, то образуются дырки и/или повторяющиеся значения нумерации. Следовательно при сохранении в бд, это поле нужно снова перенумеровать, чтобы ORDER все-таки был полем, в котором нумерация действительно актуальная. 

При сохранении вызываем обновление всех записей таблицы (учитывайте, какой размер вашей таблицы, в данной задаче у меня таблица маленькая, поэтому обновить все значения order для неё задача тривиальная).

UPDATE rule SET `order` =(select  
	@currank:=@currank +1 as rankk 
from (select @currank:=0) r) ORDER BY `order`;

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.