sql server删除Hierarchy的一支

写下来以后便于查找


SQL server 2008R2, 如果一个表格是Hierarchy的有三列,如下

ID, Name,ParentID

1    A          NULL

2    B           1

3    C           1

4    D           2

5    E           4


如果我想删除(查询)B以及以下所有节点怎么办呢


1,需要Recursive的选出来

	WITH cetAlias AS 
	(SELECT t.[id],t.[name],t.parentid FROM yaqitest t
	 WHERE t.id=2
	 UNION ALL
	 SELECT t.[id],t.[name],t.parentid FROM yaqitest t
	 INNER JOIN cetAlias parent ON t.parentid=parent.id)
	 
	 SELECT * FROM cetAlias ct

2, 有的时候需要看看数据是否在别的表中用到,数据库中应该有这个限制。可惜我们没有,后来因为烂数据不好加

3,删除。如果中间需要做什么可以把cetAlias导入到一个临时表格中搞定

你可能感兴趣的:(sql server删除Hierarchy的一支)