类似ORACLE中的start with connect by prior语法。
说明:T_SYS_ORG机构表,字段:ROW_ID/PAR_ROW_ID,PAR_ROW_ID表示父机构的ROW_ID
--自上往下
Sql代码:
WITH NODES
AS (
SELECT * FROM DBO.T_SYS_ORG par WHERE par.ROW_ID='28'
UNION ALL
SELECT child.* FROM T_SYS_ORG AS child INNER JOIN
NODES AS RC ON child.PAR_ORG_ID = RC.ROW_ID)
SELECT * FROM T_SYS_ORG WHERE row_id IN (SELECT row_id FROM NODES N ) ;
--自下往上
Sql代码 :
WITH NODES
AS (
SELECT * FROM DBO.T_SYS_ORG child WHERE child.ROW_ID='32'
UNION ALL
SELECT par.* FROM T_SYS_ORG AS par INNER JOIN
NODES AS RC ON par.row_id = RC.PAR_ORG_ID)
SELECT * FROM T_SYS_ORG WHERE row_id IN (SELECT row_id FROM NODES N ) ;
相关文章
- SQL SERVER高可用方案
- Sql Server 2012 分页方法分析(offset and fetch)
- Microsoft SQL Server on Linux 踩坑指南
- Microsoft SQL server 2012数据库学习总结(一)
- oracle sql查询练习题2带答案(10个)
- 同时兼容SQL Server和PostgreSql的分页方式
- Oracle SQL查询练习题
- SQL Server 2008 序列号
- 以其他账户打开sql server2016/vs2013/vs2015等出现“此任务要求应用程序具有较高的权限”的解决办法
- ADO连不上数据库?运行程序时出现:Microsoft OLE DB Provider for SQL Server 用户登录‘sa’失败