两个问题:
1.根据F1、F2、F3、F4、F5这些列的父子关系,更新ParentID和ID的父子关系。谢谢
2.ID是后面插入的列,如何设置他为自增列?我设置了确定提示不能为空,能不能直接更新从1开始到最头。

解决方案 »

  1.   

    先把ID列DROP掉,然后新增一列ID,设置为Identity且not null
      

  2.   

    declare @id int
    set @id=0update tb set @id=@id+1, id=@id
      

  3.   

    insert tb1 (f1,f2,f3,f4,f5,name)
    select f1,f2,f3,f4,f5,name from tb where f1<>''insert tb1 (parentid,f1,f2,f3,f4,f5,name)
    select (select max(id) from tb where f1<>'') fpid,f1,f2,f3,f4,f5,name from tb where f2<>''
    insert tb1 (parentid,f1,f2,f3,f4,f5,name)
    select (select max(id) from tb where f2<>'') fpid,f1,f2,f3,f4,f5,name from tb where f3<>''
    insert tb1 (parentid,f1,f2,f3,f4,f5,name)
    select (select max(id) from tb where f3<>'') fpid,f1,f2,f3,f4,f5,name from tb where f4<>''
      

  4.   

    你怎么这么设定,不好吧?建议用编码的
    比如01-0101-010101这样的。
    如果长的左侧几个字符跟短的字符一致,那么长的就是短的子项。这样代码中把数据库转换成tree控件也简单点不是。
      

  5.   

    给出数据和说明F1、F2、F3、F4、F5是什么关系,想要什么结果?
      

  6.   


    F1、F2、F3、F4、F5组合起来就是下面这表的“代码”列
      

  7.   

    我以前成功转过一个相进的表,如下面
    SELECT GBID AS ID,
           F5_ AS Name,
           CASE
             WHEN f2_ = '''' THEN
              0
             ELSE
              (SELECT TOP 1 GBID
                 FROM (SELECT GBID, f = f1_ + f2_ + f3_ + f4_
                         FROM GB_T4754_2002
                        WHERE f1_ = a.f1_
                          AND f2_ IN (a.f2_, '''')
                          AND f3_ IN (a.f3_, '''')
                          AND f4_ IN (a.f4_, '''')
                          AND GBID <> a.GBID) b
                ORDER BY f DESC)
           END AS ParentID
      FROM dbo.GB_T4754_2002 AS a
    用这段sql转成下面下的结构