У меня есть таблица элементов, одно из полей которой является полем «порядок отображения», который управляет порядком, в котором элементы будут отображаться пользователю. я хотел бы установить все значения этого поля во всей таблице на значение, которое будет получено, если таблица была отсортирована по определенному набору критериев - например, в алфавитном порядке. примечание - я не могу изменить порядок таблицы, например, ALTER TABLE items ORDER BY item_name
; таблица должна физически сохранять свой первоначальный заказ.mysql UPDATE для конкретного заказа в одном запросе
если мы можем предположить, таблицу items
с полем item_name
, содержащего имя элемента и контрольный порядок отображения поля disp_order
, в сущности, то, что я хотел бы сделать это (для алфавитного порядка):
SET @i:=0;
UPDATE items SET disp_order=(SELECT @i:[email protected]+1 FROM items ORDER BY item_name);
Очевидно, я не могу этого сделать, потому что я изменяю таблицу, которую я выбираю. но есть ли способ сделать это в одном заявлении?
отлично! Я пропустил это в руководстве как-то. благодаря ! –