这是一个 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 |
|-----------------|--------------------|--------------|
编辑:对不起,简单地自动增加位置列将不起作用,因为该表描述了多个父项中项目的位置(并且项目可以有多个父项)