MySQL UPDATE with GROUP and ORDER



我正在尝试对表进行更新,以便它可以根据另一列的顺序递增 1 列上的值。这是怎么回事

 ID    GROUP_ID    ORDER(Desired)   ORDER(NOW)
 1        1             1              2
 2        1             2              3
 3        1             3              1
 4        2             1              2
 5        2             2              1
 6        3             1              1
 7        3             2              1
 8        3             3              2

所以我需要的是每个 ID 更新 ORDER 列,以便它可以在每个GROUP_ID中从 1 开始连续

我已经找到了有关更新和订单的类似问题的一些解决方案,但没有一个对同一表中的组使用多个订单。

希望我正确说明了问题。提前致谢

您可以通过再次"排名"行来做到这一点。Mysql 不支持窗口函数,但您可以使用 join 和计数获得相同的结果,如下所示:

UPDATE YourTable t
INNER JOIN(SELECT s.id,s.group_id,count(*) as cnt
           FROM YourTable s
           INNER JOIN YourTable ss 
            ON(s.group_id = ss.group_id and s.id >= ss.id)
           GROUP BY s.id,s.group_id) tt
 ON (t.id = tt.id and t.group_id = tt.group_id)
SET t.order = tt.cnt

最新更新