A有两个一度好友(B、C)而B、C各有三个一度好友,求A有几个二度好友?
   例如:
    如果A有两个一度好友B、C
    而B有三个一度好友C、E、F
    C也有三个一度好友D、B、H
    则EFDH是A的二度好友,要求用一个SQL语句查询出二度好友,这是一个面试题。

解决方案 »

  1.   

    select * from Tb where parentid in (select id from tb where parentid='A')
      

  2.   

    select * from table where Id in (select FirendId from table where id='A')
      

  3.   

    上面的Sql似乎没有排除BC这两个A的1度好友和A自己!如果四度的话,只能建树了,指数级的!
      

  4.   

    Oracle 的有个
    select level, id , parentId 
    from 
    table  start with parent is null
    connect by prior id= parentId ;
    不过只支持单级根节点。Sql遇到的时候没有找到合适数据库实现方式。
    最后还是写程序实现了。类似树节点排序。不过支持森林排序。个人意见,出错勿怪!