1
我有了ID,名称,等级(深度)和parrent_id,有没有什么好的方法来消除所有节点没有任何孩子的表? (在一个水平上足够)? 我知道我可以在应用程序中执行它 - 加载给定级别上的所有节点,并检查它们是否有孩子,如果不删除,但这可能会在SQL中更有效,我不是SQL大师:)如何在SQL中删除所有没有孩子的父母?
我有了ID,名称,等级(深度)和parrent_id,有没有什么好的方法来消除所有节点没有任何孩子的表? (在一个水平上足够)? 我知道我可以在应用程序中执行它 - 加载给定级别上的所有节点,并检查它们是否有孩子,如果不删除,但这可能会在SQL中更有效,我不是SQL大师:)如何在SQL中删除所有没有孩子的父母?
你可以尝试
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)
SELECT * FROM mytable where id in (SELECT parent_id from mytable)
这应该做的工作
问题是要删除那些没有儿童的问题 – anthares 2010-02-12 08:19:42
好的,对不起,我明白你的意思了。应更改为* IS NOT NULL * – 2010-02-12 08:20:29
没错,我听错了第一次,太:) – anthares 2010-02-12 08:22:30