質問

私は、ID、名前、レベル(深さ)とparrent_idを持つテーブルを持っている子のないすべてのノードを削除する任意の良い方法はありますか? (一方のレベルで十分ですか)?

):彼らは子供を持っている場合削除しない場合は、与えられたレベルチェックのすべてのノードをロードするが、これはおそらく、SQLで、より効果的であることwhouldと私は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)

このジョブを行う必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top