SQLServer递归查询

来源:互联网 发布:虚拟机mac显卡驱动 编辑:程序博客网 时间:2024/06/09 16:47

假设我有一个菜单表,表名为t_menu,有3个字段(id,parentId,name),通过parentId关联上下级。

with tmpview(id,parentId,name,level)as(    select id,parentId,name,1 from t_menu where id=?    union all    select id,parentId,name,level+1    from t_menu t1 join tempview t2 on t1.id=t2.parentId)select *from tempview;

其中id=?这个问号即你要查询的菜单树叶子节点ID,返回结果为从传入的id一直向上查找到根节点的数据,level越大则越靠近根节点。

另外Mysql到目前为止还没有递归查询支持,经实际检验,要达到这种效果最好把数据一次性取出来在内存中循环对比计算层级关系(数据量不是太大的情况),这样会大大减少数据库IO开销。

原创粉丝点击