表是类似这样的结构ID   def_name    parent
0   
1    HVAE_x         0
2    HAVE_xx        1
3    HAVE_xxx       2
4    HAVE_xxxx      1请问如果我想根据HAVE_xxx查询到parent=0的 def_name 查询语句该怎么写?即传入HAVE_xxx 可查询出 HVAE_x

解决方案 »

  1.   

    一般是用递归方法来解决的,如只有两层:
    select * from tt where id in(
    select parent from tt where id in(
    select parent from tt where def_name='HAVE_xxx'))
      

  2.   

    不确定几层,可能一层,也可能两层甚至更多
    只是要根据某一个def_name,循环获取到它的根结点的def_name(即parent=0的def_name)各位有没有简单一点的方法
      

  3.   

    ORACLE 里可以找想这样的父子关系的数据,MYSQL不行
      

  4.   

    ID  def_name    parent 
    0  
    1    HVAE_x        0 
    2    HAVE_xx        1 
    3    HAVE_xxx      2 
    4    HAVE_xxxx      1 假设表为tt:select first.def_name,second.def_namefrom tt first,tt secondwhere first.ID = second.parent
      

  5.   

    select a.*from tt a inner join tt bon a.ID = b.parent where a.parent='0'
      

  6.   

    这样的查询只能使劲的用LEFT JOIN 才能得到结果。建议LZ改变表结构。
      

  7.   

    假设表名:tt
    不考虑性能的情况下用select a.* from tt as a left join tt as b on a.id = b.parent left join tt as c on b.id = c.parent where c.def_name = 'HAVE_xxx'
    既可以满足LZ的需求!