我正在尝试对表进行更新,以便它可以根据另一个列的顺序增加 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
Run Code Online (Sandbox Code Playgroud)
所以我需要的是对于每个 ID,更新 ORDER 列,以便它可以在每个 GROUP_ID 中从 1 开始连续。
我已经找到了一些有关更新和订单的类似问题的解决方案,但没有一个解决方案对同一表中的组使用多个订单。
希望我正确地说明了问题。提前致谢
您可以通过再次对行进行“排名”来完成此操作。Mysql 不支持窗口函数,但您可以使用 join 和 count 获得相同的结果,如下所示:
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
Run Code Online (Sandbox Code Playgroud)