MySQL の階層クエリ: 深さ優先検索による祖先の走査
階層データ内の祖先関係の決定は、データベース管理の一般的なタスクです。 MySQL では、階層クエリを使用して、ネストされた構造に効率的に移動したり、そこからデータを取得したりできます。
階層的な親子を表す 2 つの列「a」と「b」を持つ「mytable」という名前のテーブルがあるとします。 relationship:
| a | b | ---------- | 1 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | | 3 | 6 | | 4 | 7 |
特定のノードのすべての祖先を取得するシナリオを考えてみましょう。たとえば、すべての祖先を検索します。ノード 5 の親、祖父母など。
ソリューション utilizzando l'algoritmo di Ricerca in profondità:
MySQL は、深さを使用した階層クエリ ソリューションを提供します。 - ファーストサーチ (DFS) アプローチ。これを実現するクエリは次のとおりです。
SELECT @id := ( SELECT senderid FROM mytable WHERE receiverid = @id ) AS person FROM ( SELECT @id := 5 ) vars STRAIGHT_JOIN mytable WHERE @id IS NOT NULL
分析:
このクエリを実行すると、ノード 5 の祖先のリスト (4、3、2、および 1) が取得されます。このメソッドは、DFS アプローチを使用して階層を効果的に横断し、次のことを可能にします。 MySQL データベース内の複雑な親子構造をナビゲートします。
以上がMySQL の深さ優先検索は、どのようにして階層構造内のノードのすべての祖先を効果的に取得できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。