1

ID、名前、レベル (深さ)、および parrent_id を持つテーブルがあります。子を持たないすべてのノードを削除する良い方法はありますか? (1 つのレベルで十分です)? 私はアプリケーションでそれを行うことができることを知っています-特定のレベルのすべてのノードをロードし、削除しない場合は子があるかどうかを確認しますが、これはおそらくSQLでより効果的であり、私はSQLの第一人者ではありません:)

4

2 に答える 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 に答える