MySQL从子类id查询所有父类


MySQL表结构

  1. id  name    parent_id   
  2. ---------------------------   
  3. 1   Home        0   
  4. 2   About       1   
  5. 3   Contact     1   
  6. 4   Legal       2   
  7. 5   Privacy     4   
  8. 6   Products    1   
  9. 7   Support     1  

MySQL代码如下:

  1. SELECT T2.id, T2.name   
  2. FROM (   
  3.     SELECT   
  4.         @r AS _id,   
  5.         (SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id,   
  6.         @l := @l + 1 AS lvl   
  7.     FROM   
  8.         (SELECT @r := 5@l := 0) vars,   
  9.         table1 h   
  10.     WHERE @r <> 0) T1   
  11. JOIN table1 T2   
  12. ON T1._id = T2.id   
  13. ORDER BY T1.lvl DESC  

代码@r := 5标示查询id为5的所有父类。结果如下

  1. 1, 'Home'   
  2. 2, 'About'   
  3. 4, 'Legal'   
  4. 5, 'Privacy' 

相关内容