有张表,id是自增列,现在的id是1,2,3,10,50
现在想用update更新一下id使其重新按我指定的数字开始排序,比如从100开始,变为100,101,102,103,104
求一下这个语句

解决方案 »

  1.   

    把数据除了id倒出来,然后truncate表  然后数据导入进去
      

  2.   

    set @num:=100;
    update table set id=@num:=@num+1 ;
      

  3.   

    update 有张表 a,(select id,count(*) as n from 有张表 b ,有张表 c where b.id>=c.id) d
    set a.id=d.n
    where a.id=d.id
      

  4.   

    UPDATE a3 a INNER JOIN (
    SELECT a.id,100+COUNT(b.`id`) AS nid FROM a3 a LEFT JOIN a3 b ON a.`id`>b.`id` GROUP BY a.`id`) b
    ON a.`id`=b.id
    SET a.id=b.nid;
      

  5.   

    我试了下2楼的可以,只不过还需要ALTER 一下表的AUTO_INCREMENT.其他楼层的是什么意思?多表关联时能用到的吗?我这个问题是针对一张表。
      

  6.   


    麻烦你能解释一下这语句吗?@num:这些没有用过 - - 定义变量?冒号又是什么
      

  7.   


    我测试的结果是:[Err] 1052 - Column 'id' in field list is ambiguous
      

  8.   

    4楼的代码没有使用变量,直接用查询得到相应数值SELECT a.id,100+COUNT(b.`id`) AS nid FROM a3 a LEFT JOIN a3 b ON a.`id`>b.`id` GROUP BY a.`id`
    单独运行,看看结果
      

  9.   

    update 有张表 a,(select b.id+100,count(*) as n from 有张表 b ,有张表 c where b.id>=c.id) d
    set a.id=d.n
    where a.id=d.id