2010-02-12 143 views
1

我有了ID,名稱,等級(深度)和parrent_id,有沒有什麼好的方法來消除所有節點沒有任何孩子的表? (在一個水平上足夠)? 我知道我可以在應用程序中執行它 - 加載給定級別上的所有節點,並檢查它們是否有孩子,如果不刪除,但這可能會在SQL中更有效,我不是SQL大師:)如何在SQL中刪除所有沒有孩子的父母?

回答

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) 
+0

問題是要刪除那些沒有兒童的問題 – anthares 2010-02-12 08:19:42

+0

好的,對不起,我明白你的意思了。應更改爲* IS NOT NULL * – 2010-02-12 08:20:29

+1

沒錯,我聽錯了第一次,太:) – anthares 2010-02-12 08:22:30

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

這應該做的工作

相關問題