Это вопрос MySQL:
У меня есть таблица со следующей структурой.
reference
position
parent
У каждого элемента должна быть позиция, и каждая позиция должна использоваться только один раз. Позиции должны увеличиваться (поэтому, если элементов 40, позиции должны меняться от 1 до 40).
Однако данные в этой таблице находятся повсюду (одна и та же позиция используется более одного раза, некоторые строки не имеют позиции). Я хотел бы сбросить таблицу, переиндексировав позиции. Я хотел бы уважать существующие заказы (даже если они не идеальны) при этом (если это вообще возможно - если нет, позиции можно отбросить).
------------------------------------------------------
| reference | position | parent |
|-----------------|--------------------|--------------|
|ASHDFNS |2 |89 |
|BSHDFNS |2 |89 |
|CSHDFNS |1 |89 |
|DSHDFNS |100 |89 |
|ESHDFNS |8 |89 |
|FSHDFNS |22 |89 |
|ASHDFNS |1 |11 |
|BSHDFNS |22 |11 |
|CSHDFNS |333 |11 |
|-----------------|--------------------|--------------|
Желанный
-------------------------------------------------------
| reference | position | parent |
|-----------------|--------------------|--------------|
|CSHDFNS |1 |89 |
|ASHDFNS |2 |89 |
|BSHDFNS |3 |89 |
|ESHDFNS |4 |89 |
|FSHDFNS |5 |89 |
|DSHDFNS |6 |89 |
|ASHDFNS |1 |11 |
|BSHDFNS |2 |11 |
|CSHDFNS |3 |11 |
|-----------------|--------------------|--------------|
РЕДАКТИРОВАТЬ: извините, простое автоматическое увеличение столбца позиции не будет работать, поскольку таблица описывает позиции элементов в нескольких родителях (и элементы могут иметь более одного родителя)