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