2016-03-08 71 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

謝謝你,這個工作就像一個魅力,但我想明白它來自哪裏。你可以試着解釋一下嗎? –