在很多业务场景中,我们需要从数据库查询一些树状结构的数据,多半以id,pid的形式存储记录。
在Oracle中,能够通过语法轻松实现父子级间的递归查询,无论到父,子,孙,曾孙等多少级,都能查出来。
但是在mysql中,就没有像Oracle中那样有现成的语法直接调用了。
本篇文章里,我将带大家了解一种在sql中设置参数来进行递归查询的方法,如下:
设表test有以下字段:id,name,pid;
id | name | pid |
1 | 父亲 | 0 |
2 | 儿子 | 1 |
3 | 孙子 | 2 |
4 | 曾孙 | 3 |
5 | 伯伯 | 0 |
我们可以使用以下语法进行查询(假设知道儿子的id):
SELECT * FROM test
WHERE id IN(
SELECT id FROM
(
SELECT id,pid FROM test WHERE pid> 0 ORDER BY pid, id DESC
) t1,