2016-03-08 67 views
0

我想在表上进行更新,以便它可以增加1列上的值取决于他人的顺序。 下面是它会怎么走MySQL更新与组和订单

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,更新订单列,因此它可以是连续的,从1开始,每个GROUP_ID内。

我发现了一些有关更新和订单的类似问题的解决方案,但没有一个在同一个表内使用多个订单。

希望我说明了这个问题的正确性。在此先感谢

+3

真的没有一点存储这样的事情。 – Strawberry

+0

事实上,这不完全是一个订单,我这样说,所以我可以说明,他们实际上是账单,信用卡要求我计算特定服务内的账单月数 –

+1

它仍然是派生数据。存储它仍然没有意义。 – Strawberry

回答

0

你可以通过再次“排列”行来做到这一点。 MySQL不支持窗口的功能,但是可以达到相同的结果加入和计算是这样的:

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 
+0

谢谢你,这个工作就像一个魅力,但我想明白它来自哪里。你可以试着解释一下吗? –