一个表中ID  Name  Number
1   XXX   1
2   XXX   2
3   XXX   3
4   XXX   4
5   XXX   5
6   XXX   6当删除id=4的这条记录之后ID  Name  Number
1   XXX   1
2   XXX   2
3   XXX   35   XXX   5
6   XXX   6除了像update Tbl set Number = Number -1 where Number >4 的这个方法让NO这个列保持连续,还有别的什么好方法吗?

解决方案 »

  1.   


    排序应该不会改变吧,不会因为你4删除了 5就比3大了。如果你要保持连接,看你用的数据库是什么如果是oracle 有一个叫rownum字段。如果是程序可以根据 取出数据的index比如你的是list 那么list肯定是按顺序的这样也可以保持连续,而且不用改动数据库。
      

  2.   


    mysql 中要自己实现吗?
      

  3.   

    你在每次插入数据的时候,取出最大的Number值,然后+1存进去不就可以了吗? 
      

  4.   

    我做过的一个项目就是这样的.应该么什么问题.还有,可以设个colum:active,让数据库里的信息不要物理删除,做逻辑删除
      

  5.   

    你的id不是标识吗?这个也改。LZ我就不懂了
      

  6.   

    楼主太不会用google了::mysql> select * from test;
    +------+------+------+
    | id   | name | num1 |
    +------+------+------+
    |    1 | a    |    1 |
    |    2 | b    |    2 |
    |    3 | c    |    3 |
    |    5 | e    |    5 |
    |    6 | f    |    6 |
    +------+------+------+
    5 rows in set (0.00 sec)mysql> update test set num1=(select t.rownum from(
        -> select a.id,a.name,count(*) as rownum from test a,test b
        -> where a.num1>=b.num1 group by a.id,a.name) t where test.id=t.id);
    Query OK, 2 rows affected (0.02 sec)
    Rows matched: 5  Changed: 2  Warnings: 0mysql> select * from test;
    +------+------+------+
    | id   | name | num1 |
    +------+------+------+
    |    1 | a    |    1 |
    |    2 | b    |    2 |
    |    3 | c    |    3 |
    |    5 | e    |    4 |
    |    6 | f    |    5 |
    +------+------+------+
    5 rows in set (0.00 sec)mysql>
      

  7.   

    学习自以为sql还可以呐  原来 需求多多
      

  8.   


    这个方法好像和update Tbl set Number = Number -1 where Number >4 这个一样吧都是同把后面的记录都update了一下,小弟初学,不对的还请指教
      

  9.   

    不是主键的我想的就是在插入的时候,让他发现 缺少的是4,然后直接添上4插入,而不是把所有后面的都update了
      

  10.   

    --每次加1,查询不存在的记录ID,返回最小的一个SELECT MIN(A.UUID + 1) NEWID
      FROM MYTEST A
     WHERE NOT EXISTS (SELECT '1' FROM MYTEST B WHERE B.UUID = A.UUID + 1)