最近遇到一个问题,有一张表是这样的数据结构,存着你家家谱,所以是自关联的表。假如你要查询你爸爸的爸爸那条记录,该怎么查询? 或者需要看祖宗十八代如何展示?
递归是一个很好的解决方法。递归代码如下
WITH RECURSIVE qry AS (SELECT * FROM Family WHERE nickname ='You' UNION ALL SELECT bb.* FROM Family bb INNER JOIN qry on bb.id == qry.parent) SELECT * FROM qry LIMIT 3, 1;
其中offset 3 是要查询的代数 1 就是你父亲,2 就是你爷爷。。。。
输出:
id nickname parent 0 YYDBB 0