老兄,你这什么意思:
DELETE FROM TABLE1 WHERE PARENTCLASSID = YOURNEWCLASSID
难道有什么问题吗

解决方案 »

  1.   

    oracle 中delete from yourtable start with newsclassid  = 'yourid'
    connect by prior newsclassid = parentclassid;
      

  2.   

    老兄,你想用SQL直接删完好象是没有办法,不过你可以在设计ID的时候用点方法就可以的。
    比如说所有子孙的ID都有一部分用来包含起祖先的ID信息
      

  3.   

    select from yourtable where newsclassid  in
    (
    select newsclassid from yourtable start with newsclassid  = 'yourid'
    connect by prior newsclassid = parentclassid
    )给分吧
      

  4.   

    delete from yourtable where newsclassid  in
    (
    select newsclassid from yourtable start with newsclassid  = 'yourid'
    connect by prior newsclassid = parentclassid
    )给分吧 
      

  5.   

    我已经处理好了
    我用了一个function
    归递的方法把下一级的ID用数组保存
    这样不断地调用自身function
    直到结束为止
    目的达到了
    哈哈
    省了几百大洋
      

  6.   

    A的父类是B
    B的父类是C
    C的父类是A
    这不符合逻辑,但是可能会出现。你的递归会死机的。
      

  7.   

    你的id号码有什么特别的规则的吗?如果是乱来的就一定要用存储过程了,如果是分级长度建立的id号就可以用一条sql 语句搞定。当然,你必须另外建立一个规则表来定义分级的限制。
      

  8.   

    那是当然的,我还有一个字段是layerid来区分各个级别的
      

  9.   

    这个问题我想用游标或临时标应该可以解决!
    我这个有一个方法!
    create proc kkk @newsclassid int
    as
    begin
    declare @newsclassid varchar(20),@parentclassid  varchar(20),@flag integer
    create table #temp(n_id varchar(20),p_id varchar(20))
    select @flag=1
    WHILE @flag >= 1
    begin 
      insert into #temp
      select newsclassid,parentclassid  from tablename
      where  parentclassid=@newsclassid 
      delete  form tablename where newsclassid=@newsclassid 
      select top 1 @newsclassid=newsclassid,@parentclassid=parentclassid 
      from #temp
      delete  form tablename where newsclassid=@newsclassid and    parentclassid=@parentclassid 
      select count(*) into @flag from tablename
    end
    end