無制限の分類
親 ID に関連付けられた無限の分類テーブルを削除したい場合、その子孫をすべて削除するにはどうすればよいですか? 再帰が必要ない場合、この問題はやりません。階下の偉い人たちが答えてくれることを願っています。
特に質問したいのは、「実際のアプリケーションにそのような必要があるのでしょうか? プロジェクト マネージャーは再帰の使用を許可しませんか?」
問題を解決する目的なしに問題を探すのはフーリガンです。 。 。ははは。 。 。
再帰がなければ、この問題を解決する方法がわかりません。階下の偉い人たちが答えてくれることを願っています。
特に質問したいのは、「実際のアプリケーションにそのような必要があるのでしょうか? プロジェクト マネージャーは再帰の使用を許可しませんか?」
問題を解決する目的なしに問題を探すのはフーリガンです。 。 。ははは。 。 。
もちろん、強制的なルールはありません。目標を達成するために他の方法を見つけたいだけです。モデレーターの実装プロセスを見る前と同じように、ツリー配列の構築は再帰的である必要があると常に考えていました
孤立したものを見つけて
pid が存在しないテーブルから ID を SELECT (テーブルから ID を選択)
して、対応するレコードを削除します
削除するたびに新しい孤立子が生成される可能性があるため、ループ内で実行する必要があります
おおよそ次のとおりです:
do { $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)'); list($g) = mysql_fetch_row($rs); mysql_query("delete from 表 where id in (g)");}where(mysql_affected_rows());
孤立者を見つける
pid が存在しないテーブルから ID を選択 (テーブルから ID を選択)
その後、対応するレコードを削除します
必須 削除するたびに新しい孤立子が生成される可能性があるため、ループで実行します
おおよそ次のようなものです:
do { $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)'); list($g) = mysql_fetch_row($rs); mysql_query("delete from 表 where id in (g)");}where(mysql_affected_rows());
左と右の値 + 上と下の値により、息子は父親を探し、上と下の値を探し、先祖は下、左、右の値を探します。