写下来以后便于查找
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 2008 R2删除Hierarchy表中指定节点及其所有子节点的方法,包括递归查询和数据依赖检查,并提供了相应的SQL语句示例。
334

被折叠的 条评论
为什么被折叠?



