我必须改变我的表,添加一个我必须用int数字序列填充的列。有谁知道我怎么能填写这个专栏? 我试过这个:
set @i = 1;
Update db.table set new_column=(@i := @i+1) where id>0;
但这只是用数字2填充所有行。=(
答案 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();
谢谢你们=)