sql 递归查询所有的下级

--> 生成测试数据表: [tb]

IF OBJECT_ID(‘[Users]‘IS NOT NULL

    DROP TABLE [Users]

GO

CREATE TABLE [Users] ([userid] [int],[username] [nvarchar](10),[parentUserId] [int],[parentUserName] [nvarchar](10))

INSERT INTO [Users]

SELECT ‘1‘,‘admin‘,‘0‘,NULL UNION ALL

SELECT ‘2‘,‘aaaaa‘,‘1‘,‘admin‘ UNION ALL

SELECT ‘3‘,‘bbbbb‘,‘2‘,‘aaaaa‘ UNION ALL

SELECT ‘4‘,‘ddddd‘,‘3‘,‘bbbbb‘

-->SQL查询如下:

;with as

(

  select *,level=1 from Users where [parentUserId]=0

  union all

  select a.*,level+1 from Users a join t b on a.parentUserId=b.userid

)

select from where [parentUserId]<>0

/*

userid      username   parentUserId parentUserName level

----------- ---------- ------------ -------------- -----------

2           aaaaa      1            admin          2

3           bbbbb      2            aaaaa          3

4           ddddd      3            bbbbb          4

 

(3 行受影响)

*/

时间: 2024-10-13 10:40:27

sql 递归查询所有的下级的相关文章

Sql递归查询

/*Sql递归查询*/ /* 实际就是把所有树的节点查找出来 Oracle的一个表中也可以保存树形结构信息,用start with...connect by等关键字 eg:创建表并插入数据 */ Create table Tree(son char(10),father char(10)); insert into tree (SON, FATHER) values ('孙子1', '儿子'); insert into tree (SON, FATHER) values ('孙子2', '儿子'

【转】sql递归查询问题

原文链接地址http://www.cnblogs.com/sweting/archive/2009/06/08/1498483.html 在工作中遇到一个问题,是需要sql递归查询的.不懂,于是到csdn上去问,那里的效率真是非常高,我以前也没在上面问过问题. 问题描述: 我有一个表结构如下:id upperid1     23     24     15     3 具体层次不知道,我想用递归sql语句把所有属于某个upperid的数据,包括它的子树,都读出去,请问应该子怎么写?      比

关于SQL递归查询在不同数据库中的实现方法

比如表结构数据如下: Table:Tree ID Name ParentId 1 一级  0 2  二级 1 3  三级 2 4 四级 3 SQL SERVER 2005查询方法: //上查 with tmpTree as ( select * from Tree where Id=2 union all select p.* from tmpTree inner join Tree p on p.Id=tmpTree.ParentId ) select * from tmpTree //下查

SQL递归查询(with cte as)

http://www.cnblogs.com/xqhppt/archive/2011/02/15/1955366.html 2011-02-15 16:41 by 忧忧夏天, 2415 阅读, 0 评论, 收藏, 编辑 with cte as(select Id,Pid,DeptName,0as lvl from Departmentwhere Id =2unionallselect d.Id,d.Pid,d.DeptName,lvl+1from cte c innerjoin Departme

关于Oracle、SqlServer 的sql递归查询

递归查询所有子节点 oracle SELECT * FROM hrmdepartment              START WITH  id=22              CONNECT BY PRIOR id=supdepid sqlserver with result_table as               (                  select a.id,a.lastname,a.managerid from hrmresource a where id=321 

SQL递归查询(with cte as) 物料分解

需求 最近在做一个MRP的项目,需要根据生产下达的计划从原始无聊表中分解出成品所需要的原材料和数量. 参考 http://www.cnblogs.com/xqhppt/archive/2011/02/15/1955366.html http://www.cnblogs.com/guoysh1987/archive/2011/12/23/2299379.html 代码实现 SQL数据表结构 CREATE TABLE [dbo].[cProduction]( [ID] [int] IDENTITY(

sql递归查询子级

WITH T(emp_no, name, dept_no, the_level, path,path1,manager_id) AS( SELECT emp_no, name, dept_no ,1 AS the_level ,'\'||name path ,'\'||manager_id path1 ,manager_id FROM BASE_HR_EMP where emp_no='10002241' UNION ALL SELECT e.emp_no, e.name, e.dept_no

SQL 递归查询

;WITH T AS( SELECT Id FROM tb AS A WHERE --NOT EXISTS(SELECT * FROM tb WHERE Id = A.ParentId ) AND --加这句条件,就排除自己 A.Id='5801CB7F-06DB-46A7-BA97-F0C7CB5D3ADA' UNION ALL SELECT A.Id FROM [tb] AS A JOIN T AS B ON A.ParentId = B.Id )SELECT Id FROM T ; 原文地

postgre sql递归查询

WITH  RECURSIVE  r  AS (SELECT * FROM [表] WHERE id = xxxunion ALLSELECT [表].* FROM [表], r WHERE [表].id = r.parent_id)SELECT * FROM r ORDER BY id; 递归向上查询数据 原文地址:https://www.cnblogs.com/snail90/p/9972447.html