1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql 查询父子关系_递归查询具有父子关系的表

mysql 查询父子关系_递归查询具有父子关系的表

时间:2022-02-16 20:32:01

相关推荐

mysql 查询父子关系_递归查询具有父子关系的表

案例描述:

一张表(r),有字段m,p , 其中字段m的值可以出现在字段p中,字段p的值也可以出现在m中,根据指定字段p的值,查询字段m的值集,然后将字段m的值集作为字段p的值进行递归查询,直到结果集大小为0。

下面是一个简单的表(r)结构示例图:

看到上面的表结构,让人很容易想到树形结构,不过上图并不是一个严格意义上的树形结构。

严格的树形结构是:根节点+子节点+叶子节点,其中根节点无父节点,子节点有子节点和父节点,叶子节点只有父节点。能够根据具一个节点查出所有的叶子节点,注意实际使用中往往字段m的值是唯一的。

问题:查询出p=2的所有m值,再以m的值作为p的值进行递归查询。

按照问题描述可以看出:

p=2 查出 m=(4, 6)

p=(4, 6)查出 m=(7, 7)

p=m 无结果为止。

PostgreSQL中的递归查询可以实现此功能:

WITHRECURSIVEvAS(

SELECTr."m",r."p"fromrwherer."p"='2'

UNIONALL

SELECTr."m",r."p"fromrINNERJOINvonr."p"=v."m"

)

select*fromv;

说明:v作为结果集表,r是原数据表。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。