通过sql语句递归查找所有下级或上级用户
1.MS Sql
with
cte
as
(
select
Id,Pid,DeptName,
0
as
lvl
from
Department
where
Id
=
2
union
all
select
d.Id,d.Pid,d.DeptName,lvl
+
1
from
cte c
inner
join
Department d
on
c.Id
=
d.Pid
)
select
*
from
cte
2.Oracle
一、建表
CREATE TABLE USERS.TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
)
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1'
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
二、格式
Select * from …. Where [结果过滤条件语句]
Start with [and起始条件过滤语句]
Connect by prior [and中间记录过滤条件语句]
三、查找所有下级
select * from tbl_test start with id=1 connect by prior id=pid
注意:此sql能查找id=1的数据的所有下级,写sql语句时要注意,因为是从id开始查找下级,所以connect by prior 子句的条件是id=pid
四、查找所有上级
select * from tbl_test start with id=5 connect by prior pid=id
因为是从id开始查找上级,所以connect by prior 子句的条件是pid=d
分享到:
相关推荐
sql server 2008 递归查询所有上级或下级数据
特别是用于树形结构时(菜单树,权限树..),这种表设计自然而然地会用到递归,若是在程序中进行递归(虽然在程序中递归真的更方便一些),无论是通过ADO.NET简单sql查找还是ORM属性关联都会执行多次sql语句,...
一个属性数据库表,利用sql语句对其查询得到树形的数据库表的记录利用的是数据库的递归查询
sql递归查询1 A B Value ----------- ----------- ---------- 1 2 节点1 2 3 节点2 3 4 节点3 4 1 end 要达到的目的,已知一A字段的值,查询B字段的值,若B字段的值不为 "1 ",则返回Value, 并将B字段的值...
oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归树形结构查询功能,需要的朋友参考下
│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │...
│ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql │ │ 8.2.4 查找指定节点的所有父...
SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器...
2.2 通过SQL语句管理数据表 2.2.1 创建数据表 2.2.2 定义非空约束 2.2.3 定义默认值 2.2.4 定义主键 2.2.5 定义外键 2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 ...
<br>SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL...
2.2 通过SQL语句管理数据表 2.2.1 创建数据表 2.2.2 定义非空约束 2.2.3 定义默认值 2.2.4 定义主键 2.2.5 定义外键 2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 ...
<br>SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL...
该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/...
该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/...
阅读《Microsoft SQL Server 2008技术内幕:T-SQL查询》,可以充分地理解T-SQL语言和良好的编程实践,学会如何编写更加有效而强大的查询语句。 序言 I 致谢III 前言 V 第1章 逻辑查询处理 1.1 逻辑查询处理的...
6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP...
SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器...
2.2 通过SQL语句管理数据表 2.2.1 创建数据表 2.2.2 定义非空约束 2.2.3 定义默认值 2.2.4 定义主键 2.2.5 定义外键 2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 ...
2.2 通过SQL语句管理数据表 2.2.1 创建数据表 2.2.2 定义非空约束 2.2.3 定义默认值 2.2.4 定义主键 2.2.5 定义外键 2.2.6 修改已有数据表 2.2.7 删除数据表 2.2.8 受限操作的变通解决方案 第3章 ...