2012-06-27 3 views
0

업데이트 된 각 행에 대해 MAX() + 1 설정 값 :MySQL의 :

나는 다음과 같이 sync_numbers 일부 테이블이 :

--------------------- 
id | sync_number 
--------------------- 
    1 |  1 
    2 |  1 
    3 |  1 
    4 |  1 

가 지금은 최대로 sync_number을 설정하려면 value + 1이지만 다음과 같이 각 행에 대해이 작업을 수행하십시오.

--------------------- 
id | sync_number 
--------------------- 
    1 |  2 
    2 |  3 
    3 |  4 
    4 |  5 

어떻게하면됩니까?

나는 이런 식으로 뭔가를 시도했다 :

UPDATE u_shop SET sync_number = ((SELECT selected_value FROM (SELECT MAX(sync_number) AS selected_value FROM u_shop) AS sub_selected_value) + 1); 

하지만 내가 필요없는 모든 행에 같은 값을 배치합니다.

답변

3

이 작동합니다 : 유르겐에 대한

UPDATE u_shop 
inner join (SELECT @row := MAX(sync_number) FROM u_shop) r 
SET sync_number = @row := @row + 1 
+0

+1, 나는이 @row 패턴 :( –

+0

네 싫어하더라도이가 작동 – Prizoff

+0

@Prizoff 세트는 다음과 같은 올바른 것입니다. :) 2 분 안에. 그래서 내가 빨리 할 수 ​​없기 때문에 :) – Boomer