我正在尝试对表进行更新,以便它可以根据另一列的顺序递增 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