数据表t_depart
---------------------------------------------------------------------------
code(vechar 20)        name              parent(vechar 20)
---------------------------------------------------------------------------
01                                  总部                
0101                              营销一部         01
0102                              营销二部         01  
0103                              营销三部         01  
0104                              营销四部         01  该表是部门表,无限分类
我现在想实现用程序往表里边添加数据时能自动算出新的部门号,即现在添加总部的子部门01时,下边就应该是0105了,谁能指点下怎样算出0105这个值,谢谢了!

解决方案 »

  1.   


    select cast(max(code) as unsigned)+1 new_code from t_depart where parent='01';
      

  2.   

    先检索得到01部门里编号最大的那个code值(where parent="01" order by code desc limit 1),然后再insert一条新的记录将编号设置为那个最大的+1
      

  3.   

    老兄,你的好像不对,应该这个
    SELECT right( '10000' + cast( max( code ) AS unsigned ) +1, 4 ) 
    FROM t_depart
    WHERE parent = '01';
    不过,我还是受到了你的启发
      

  4.   

    老兄,你的好像不对,不过我还是受到了你的启发,呵呵。应该这样
    SELECT right( '10000' + cast( max( code ) AS unsigned ) +1, 4 ) 
    FROM t_depart
    WHERE parent = '01';
      

  5.   

    这种取数据方法不可取还是取出数据结点进行计算比如,你现在只有 0101 0199 两条记录,其中0102 - 0198 被你册了了,按上面的SQL 取出来是0200 肯定不对,应该是在已删除的 0102 - 0198中的任意一对