2016-04-27 4 views
0

Мне нужно изменить мою таблицу, добавив столбец, который я должен заполнить с помощью последовательности чисел int. Кто-нибудь знает, как я могу заполнить этот столбец? Я попытался это:Заполните столбец номерами последовательностей в MySQL

set @i = 1; 
Update db.table set new_column=(@i := @i+1) where id>0; 

Но это просто заполнить все строки с номером 2. = (

ответ

1

Попробуйте

Update your_table 
join 
(
    select id, @i := @i+1 as rank 
    from your_table 
    cross join (select @i := 0) ia 
    where id > 0 
    order by id 
) tmp on tmp.id = your_table.id 
set your_table.new_column = tmp.rank 
1

вы можете легко сделать так:

UPDATE db.table 
CROSS JOIN (SELECT @myid := 0) AS parameter 
SET new_column = @myid := (@myid +1); 
0

Все это отвечает мне. И я сделал еще один

delimiter # 
create procedure fill_column() 
begin 
    declare v_max int unsigned default 83;-- number of registers that I have 
    declare v_counter int unsigned default 0; 
    declare a int default 0; 
    start transaction; 
    while v_counter < v_max do 
     update db.tb_table set new_column= (@a := @a+1) where id> 0; 
     set v_counter=v_counter+1; 
    end while; 
commit; 
end # 
call fill_column(); 

Thanks guys =)

+0

примечание: объявить int по умолчанию 0; это не . вы также можете прямо использовать: set new_column = v_counter - если установить по умолчанию значение 1 –