在MySQL中使用序列int数字填充列

时间:2016-04-27 17:13:44

标签: mysql

我必须改变我的表,添加一个我必须用int数字序列填充的列。有谁知道我怎么能填写这个专栏? 我试过这个:

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

但这只是用数字2填充所有行。=(

3 个答案:

答案 0 :(得分:2)

你可以这么做:

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

答案 1 :(得分: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

答案 2 :(得分: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();

谢谢你们=)