//SQL 实现地区的实现树形结构递归查询(无限级分类),level为节点层级,由小至大依次 2018-09-25 StringBuilder areaSQL = new StringBuilder(); areaSQL.AppendLine(" with cte_child(id,areaName,pid,level) as ( select id,areaName,pid,0 as level from erp_area "); areaSQL.AppendLine(" where pid = 0 "); //优先列出第一节点 id = 1 指定中国 areaSQL.AppendLine(" union all "); //递归条件 areaSQL.AppendLine(" select a.id,a.areaName,a.pid,b.level+1 "); areaSQL.AppendLine(" from erp_area a inner join cte_child b on ( a.pid=b.id) "); areaSQL.AppendLine(" ) select * from cte_child "); DataTable dtArea = sqlhelp.GetDataSet(areaSQL.ToString()).Tables[0];