我有一个具有 id、名称、级别(深度)和 parrent_id 的表,有没有什么好的方法可以删除所有没有子节点的节点?(一层就够了)?我知道我可以在应用程序中做到这一点 - 加载给定级别的所有节点并检查它们是否有子节点,如果没有删除,但这可能在 SQL 中更有效,我不是 SQL 大师 :)
问问题
495 次
2 回答
3
你可以试试
SELECT DISTINCT tParent.*
FROM Table tParent LEFT JOIN
Table tChild ON tParent.ID = tChild.ParentID
WHERE tChild.ID IS NOT NULL
更好的是尝试
SELECT *
FROM Table t
WHERE NOT EXISTS(SELECT 1 FROM Table WHERE ParentID = t.ID)
于 2010-02-12T08:17:36.020 回答
2
SELECT * FROM mytable where id in (SELECT parent_id from mytable)
这应该做的工作
于 2010-02-12T08:14:12.373 回答