再帰 CTE を使用した 1 つのクエリで MySQL テーブル内のすべての親を検索
階層構造を持つデータベース内で親を識別する特定のレコードの処理は複雑なタスクになる可能性があります。 MySQL では、再帰共通テーブル式 (CTE) を使用してこの課題に効率的に対処できます。問題ステートメントとその解決策を見てみましょう。
問題ステートメント:
階層構造 (提供されたスキーマ内のテーブルなど) を持つ MySQL テーブルがあるとします。各行は、ID、タイトル、親 ID、その他の関連情報を持つノードを表します。タスクは、階層内の特定のノードのすべての祖先 (親) を取得することです。
解決策:
提供されたソリューションは、再帰 CTE を利用して階層を横断し、ID で指定されたノードの親を識別します。次のクエリは、このアプローチを示しています。
SELECT T2.id, T2.title, T2.controller, T2.method, T2.url FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM menu WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := 31, @l := 0) vars, menu m WHERE @r <> 0) T1 JOIN menu T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;
クエリの説明:
このクエリは、単一の SQL ステートメントで指定されたノードのすべての親を効率的に取得し、MySQL の階層データをナビゲートするための便利でパフォーマンスの高いソリューションを提供します。
以上が単一のクエリを使用して、MySQL 階層テーブル内のノードのすべての祖先を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。