添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

with partents as (
select * from T_DPT where CID  in('123')
UNION ALL
(
SELECT a.* from T_DPT a
inner join partents as b on a.CID=b.DPT_SUP_CID
)
)
SELECT CID FROM partents where  DPT_SUP_CID not in ('123')

2020-05-28 补充修改

--根据指定子节点获取所有父节点--
WITH TEMP AS
(
SELECT * FROM T_DPT WHERE DPT_NAME ='BU9.7.1O10908831' --子级
UNION ALL
SELECT T0.* FROM TEMP,T_DPT T0 WHERE TEMP.dpt_sup_cid=T0.cid --父级ID==子级ID
)
SELECT * FROM TEMP;

--根据指定节点ID获取所有子节点--
WITH TEMP AS
(
SELECT * FROM T_DPT WHERE DPT_NAME ='南方中心O10907566' --父级
UNION ALL
SELECT T0.* FROM TEMP,T_DPT T0 WHERE TEMP.cid=T0.dpt_sup_cid --子级ID==父级ID
)
SELECT * FROM TEMP;

在最近老是用到这个 SQL ,所以记下来了: 1:创建表 CREATE TABLE [dbo].[BD_Booklet]( [ObjID] [int] IDENTITY(1,1) NOT NULL, [ParentID] [int] NULL, [ObjLen] [int] NULL, [ObjName] [nvarchar](50) NULL, [ObjUrl] [nvarchar](... where ObjectId = 2 union all select d.ObjectId,d.Pid,d.Name,lvl + 1 from children c inner join SysStruct d on c.ObjectId = d. 在 SQL Server 中,使用 CTE 表达式很容易做到无限层次父子关系 查询 ;在不支持CTE表达式的版本中,借助函数递归也可以轻松实现。 在 My SQL 中,这个需求的实例稍显复杂, My SQL 中没有支持递归的 查询 ,没有表值函数,函数不支持递归,所以通常都是用循环实现,显得比较别扭。今天看到一个用单条语句实现的递归 查询 ,想法独特,分享一下。 表结构和数据 CREATE TABLE table1(id int, name varchar(10), parent_id int); INSERT table 此 sql 查询 id=2的所有 子节点 id,并包括当前id=2的 节点 ,如果不想包括当前 节点 ,去掉。此 sql 查询 id=3的所有 父节点 sql ,parent_id:父id。 with tab as select pc.id,pc.ParentId,pcd.Name,1 as [level] from ProductCategories pc join Produ... SQL Server 2005开始支持递归 查询 了。之前我们在保存一个树状结构的时候,常常采用在表格中增加一个ParentID这个字段保存其对应上级,但是这样的表格设计,在 查询 的时候,需要多次 查询 才能 查询 所需要的结果,一般都需要程序来实现。现在不用了, SQL Server 2005支持递归 查询 了(Oracle和DB2早支持了)。写法如下:假设表中的上下级关系采用的是ID和Paren