如何在SQL中删除所有没有子项的父项?

时间:2010-02-12 08:12:47

标签: sql mysql adjacency-list

我有一个具有id,name,level(深度)和parrent_id的表,有没有什么好方法可以删除没有子节点的所有节点? (在一个层面上就足够了)? 我知道我可以在应用程序中执行它 - 加载给定级别的所有节点并检查它们是否有子节点,如果没有删除,但这可能在SQL中更有效并且我不是SQL大师:)

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

SELECT * FROM mytable where id in (SELECT parent_id from mytable)

这应该做的工作