2012-06-27 2 views
0

Обновлено:MySql: установленные значения до MAX() + 1 для каждой строки

У меня есть таблица с sync_numbers, как это:

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

теперь я хочу, чтобы установить sync_number до максимума значение + 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

Дa, это работает Благодаря – Prizoff

+0

@Prizoff набор, как правильно тогда :) – Boomer

Смежные вопросы