我有树:
Trees(IDNodo, Path, color, ....)
IDMytable是一个自动数字(bigint), path是一个varchar(MAX),它包含到我的树中一个节点的完整路由。
我想删除所有的节点和子节点,所以我可以这样做:
delete from trees where Path like '%[IDNode]'%
删除节点和所有子节点。
但是如果我想删除所有具有特定属性的节点,我可以通过以下查询获得这些节点:
select * from Trees where Color = 'Red';
这给出了所有树中所有红色的节点。我得到很多idnode。然后我要删除每个红色节点的所有子节点。
delete from trees where Path like IN (select * from Trees where Color = 'Red');
如果路径是一个长,例如,我可以使用"IN",但我不知道当字段是varchar时是否有等效的。
我想避免使用递归过程
你想让你的删除查询如下
delete from trees where Path
IN (select Path from Trees where Color = 'Red');
但是上面的查询就等于说
delete from Trees where Color = 'Red';