数据库为mysql,有字段:id sy name time其中id与sy不连贯,请问如何操作可让已有数据连贯起来??
例:
id      sy              name      time
1       XXXX-2007-1     测试      2007-01-02 13:55:01
2       XXXX-2007-2     测试      2007-01-02 13:55:01
5       XXXX-2007-5     测试      2007-01-02 13:55:01
8       XXXX-2008-8     测试      2008-01-02 13:55:01
10      XXXX-2008-10    测试      2008-01-02 13:55:01
想要的数据为:
id      sy              name      time
1       XXXX-2007-1     测试      2007-01-02 13:55:01
2       XXXX-2007-2     测试      2007-01-02 13:55:01
3       XXXX-2007-3     测试      2007-01-02 13:55:01
4       XXXX-2008-4     测试      2008-01-02 13:55:01
5       XXXX-2008-5     测试      2008-01-02 13:55:01

解决方案 »

  1.   

    没有意义  id 一般是主键  唯一的,而且 中间删除了 不影响其他你不要管数据库里面怎么存,你要编号的话 就自己 循环的时候 用 i++
      

  2.   

    我不知道你有没有用sequence。从你给的数据来看,是用了自增长主键的。
    我的想法是,做一个方法,每次从数据库中取得最大的主键,然后+1作为返回值。
    然后每次insert的时候通过上面的方法取得主键的值。
    最后是做一个触发器,每次删除该表的时候,比如,删除id=5的数据,那么
    update table set id=id-1 where id>5。
    这样能保证id是连续的。不知道MySql是否支持触发器。
      

  3.   

    加另外一个字段syid,id sy name time syid
    然后,排序数据后,更新sy和syid
      

  4.   

    本来是连贯的 现在中间有很多条数据被删除了...后面的要跟上 数据又多  所以想在sql语句上找找问题
    不是显示效果要连续 是整个数据要连续起来 
      

  5.   

    id 是主键,不应具有业务意义的。意思就是说这个 ID 有和没有与你的数据是没有任何关系的。
      

  6.   

    要连续当然可以做到,如果像oracle那样有个rownum这样的东西的话只要一条SQL就能搞定。如果没有的话也可以用存储过程做。问题是一般来说不应该这么做。
      

  7.   

    给个建议拉:
    你可以这么做拉。
    1.首先将你那张表该个名字 
    2.重新建一张表 叫做原表名
    3.并将主键字段设成自动增长的表示列
    4.insert into 原表名(sy,name,time) select (sy,name,time) from 该名字的表
      

  8.   

    用java代码操作,先读出来,修改,再写进去