一张表table有以下字段(id,名称,parentid)满足 parentid 是0 的就是父类否则是子类
id name parentid 
1  aaa   0
2  bbb   1
3  vvv   1
4  ddd   5
5  jjj   0
6  kkk   5
使用的是连接查询left join 要求显示的是一下效果:
id name childname
1  aaa   bbb
2  aaa   vvv          
3  jjj   ddd
4  jjj   kkk 

解决方案 »

  1.   


    select parent.id, parent.name, child.name as childname
      from table as child
      left join table as parent
     where child.parentid <> 0
       and child.parentid = parent.id
      

  2.   

    不知道你的结果集中的id是个什么东西,貌似既不是父的id,也不是子的id,难道是个序号?如果只要parentname和childname的话,使用下面的sql语句即可 select p.name,c.name as childname
     from table c left join table p
     on c.parentid = p.id
     where c.parentid>0
      

  3.   

    sorry 语法错了。
    select parent.id, parent.name, child.name as childname
      from table as child
      left join table as parent
        on child.parentid = parent.id
     where child.parentid <> 0
      

  4.   

    select c.id,a.name as name,c.name as childname
    from table c left join table a 
    on c.parentid=a.id where c.parentid>0
      

  5.   

      select identity(int,1,1) as id , parent.name as name, child.name as childname
      into #temp from table as parent left join table as child 
      on child.parentid = parent.id
      where parent.parentid = 0 order by parent.id  select * from #temp