【发布时间】:2019-01-17 15:50:34
【问题描述】:
我损坏了 sort_order 字段,需要通过将行更新为增量顺序来进行更正。当没有分组时,此解决方案效果很好:
SET @i := 0;
UPDATE tbl SET sort_order= @i:=@i+1 ORDER BY sort_order;
但是当您谈论需要为每个组重置 sort_order 字段的表时,该解决方案将失败。在我的例子中,唯一组是用户和类型的组合,因此 sort_order 应该为每个唯一用户/类型组合重置。
我可以做些什么来更新这个:
id user type name sort_order
152070 cust forex ^EURUSD 3
374143 cust forex ^EURGBP 3
376218 cust stock IBM 3
376219 cust stock FB 3
376219 cust stock AMZN 3
374676 degr forex ^BTCUSD 3
376217 degr forex ^AUDJPY 3
376220 degr stock C 3
376221 degr stock AMZN 3
看起来像这样:
id user type name sort_order
152070 cust forex ^EURUSD 1
374143 cust forex ^EURGBP 2
376218 cust stock IBM 1
376219 cust stock FB 2
376219 cust stock AMZN 3
374676 degr forex ^BTCUSD 1
376217 degr forex ^AUDJPY 2
376220 degr stock C 1
376221 degr stock AMZN 2
我也愿意接受 PHP 解决方案。
编辑:
MySql 5.6
我发布的第一个解决方案导致了这个结果,这不是预期的结果。同样,我想按组重新排序。
id user type name sort_order
152070 cust forex ^EURUSD 1
374143 cust forex ^EURGBP 2
376218 cust stock IBM 3
376219 cust stock FB 4
376219 cust stock AMZN 5
374676 degr forex ^BTCUSD 6
376217 degr forex ^AUDJPY 7
376220 degr stock C 8
376221 degr stock AMZN 9
【问题讨论】:
-
失败是什么意思? ...你有一个错误..显示错误信息,错误的结果?显示您的实际结果,您的预期结果并解释结果的逻辑
-
你用的是什么版本的mysql?
-
@scaisEdge 编辑了我的问题以显示第一个解决方案的结果。
-
@P.Salmon mysql 5.6
-
我没有得到您编号的组 - 例如,前 2 行似乎不是重复的,所以为什么它们的 sort_order 为 1 ,2