Это вопрос 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 |
|-----------------|--------------------|--------------|
РЕДАКТИРОВАТЬ: Извините, простое автоматическое увеличение столбца позиции не будет работать, так как таблица описывает позиции элементов в нескольких родителях (и элементы могут иметь более одного родителя)