with recursive temp as SQL递归
SQL中使用临时表
一个公司有很多一次部门,编号为25,23,01,22,一级部门下又有很多二级部门,二级部门下又有三级部门,现需求出某一一级部门下的所有部门id,就需要用到递归的方法,建立临时表来求出所有id。
如何求出一级部门下的所有部门id
with recursive temp as
(
SELECT * from org_group where id_='25' //查询出父id这条记录,此时这条记录已存在temp表中
union all
/*这时要注意,下面这条sql是获取的期望结果中的后两条记录(不包含第一条)
*注意where后的条件,我们使用temp表中的唯一一条记录的id关联org_group表中的id
*仅当temp第一条记录匹配不到org_group表中的id时才会对temp的第二条记录id进行匹配
*/
select a.* from org_group a join temp on a.parent_id_ = temp.id_
)
SELECT * from temp