真的不清楚关于,id=Bid,然而你举的例子又不等啊。
1        kk 0
3 gg 1
4 ffg 16 df 4

解决方案 »

  1.   

    select * from table where id=1 or bid=1 ?
      

  2.   

    是不是下面的意思select *
    from tt
    where id=bid and id=1
      

  3.   

    楼主是说要递归的意思吧这个用一条sql语句好像是办不到哦
      

  4.   

    这种表结构不能用一句sql解决.
    下面是用存储过程的方法:create   PROCEDURE GetAll (@ParentID int) as
    SET NOCOUNT ON
    DECLARE @level int
    CREATE TABLE #stack (item int, level int)
    INSERT INTO #stack VALUES (@ParentID, 1)
    CREATE TABLE #stackEx (item int, level int)
    INSERT INTO #stackEx VALUES (@ParentID, 1)
    SELECT @level = 1
    WHILE @level > 0
    BEGIN
       IF EXISTS (SELECT * FROM #stack WHERE level = @level)
          BEGIN
             SELECT @ParentID = item
             FROM #stack
             WHERE level = @level
             
             DELETE FROM #stack
             WHERE level = @level
                AND item = @ParentID
             INSERT #stack
                SELECT ID, @level + 1
                FROM tablename
                WHERE parentID = @ParentID
             INSERT #stackEx
                SELECT ID, @level + 1
                FROM tablename
                WHERE parentID = @ParentID
             IF @@ROWCOUNT > 0
                SELECT @level = @level + 1
          END
       ELSE
          SELECT @level = @level - 1
       
    END 
       Select * 
       from tablename
       where id in ( select item from  #StackEx)
      

  5.   

    楼上的各位,我不是这个意思。这样就不难了,难就难在有点儿带递归。如我举的例子,首先看id=6的bid=4,往上推id=4,它的bid=1,再往上推就是id=1了,它的bid=0,这个是规定的,起始值必须为0。还有id=3的bid=1,它往上推也是id=1,之后就不会有了。不知道各位有没有明白,谢谢!!我要查询的,假如id=1,所有bid=1属于它的以及由它延伸出来的均要显示
    谢谢各位!!!
      

  6.   

    是树:
    参考:create table #(Parent_id int,item_id  int )
    insert into #(Parent_id,item_id) values(1,0)
    insert into #(Parent_id,item_id) values(2,1)
    insert into #(Parent_id,item_id) values(3,1)
    insert into #(Parent_id,item_id) values(4,2)
    insert into #(Parent_id,item_id) values(5,2)
    insert into #(Parent_id,item_id) values(6,3)
    insert into #(Parent_id,item_id) values(7,2)
    insert into #(Parent_id,item_id) values(8,3)
    insert into #(Parent_id,item_id) values(9,7)
    insert into #(Parent_id,item_id) values(10,9)set nocount on
    declare @ int,@i int
    set @=2
    declare @t table(Parent_id int,item_id  int,iv int)
    declare @t1 table(Parent_id int,item_id  int)
    insert into @t1
    select * from  #  where item_id=1
    set @i=1
    while  exists(select TOP 1 * from @t1)
    begin
     insert into @t(Parent_id ,item_id ,iv )
     select *,@i from @t1
     delete from  @t1
      insert into @t1    
      select * from  # where item_id  in (select Parent_id from @t where iv=@i)
      set @i=@i+1
    end
    select * from @t
    drop table #
    set nocount off
      

  7.   

    在ORACLE里边有下边的语句:   
    SELECT * FroM tt start with id='1' connect by id =prior bid; 
    不知道MS里边有没有类似的语句,关注!