如何删除varchar中包含元素列表的所有记录?



我有树:

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';

最新更新