写下来以后便于查找
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导入到一个临时表格中搞定