ホームページ > データベース > mysql チュートリアル > 再帰クエリを使用して MySQL 階層データベース内のノードのすべての祖先を取得するにはどうすればよいですか?

再帰クエリを使用して MySQL 階層データベース内のノードのすべての祖先を取得するにはどうすればよいですか?

DDD
リリース: 2024-12-13 10:29:18
オリジナル
325 人が閲覧しました

How Can I Retrieve All Ancestors of a Node in a MySQL Hierarchical Database Using Recursive Queries?

MySQL の階層クエリ

階層データを扱う場合、特定のノードの親、祖父母、およびさらに先祖を取得する機能が有効になります。重要な。この記事では、MySQL で再帰クエリを使用してこれを実現する方法について詳しく説明します。

列 a と b で表される親子関係を持つテーブルがある場合、次のクエリを使用して、特定のクエリの祖先をすべて検索できます。

SELECT @id := (SELECT senderid FROM mytable WHERE receiverid = @id) AS person
FROM (
  SELECT @id := 5
) vars
STRAIGHT_JOIN
mytable
WHERE @id IS NOT NULL
ログイン後にコピー

このクエリは、@id 変数を指定されたノード (この例では 5) に設定するサブクエリで始まります。次に、外側のクエリがこの変数のテーブルに結合し、親がなくなるまで効果的に階層を上にたどります。 STRAIGHT_JOIN 構文は、クエリがトップダウン方式で処理されることを保証します。

クエリの結果は、指定されたノードの祖先のリストになります。ルート祖先が最初にリストされます。

1
2
3
4
ログイン後にコピー

このアプローチを理解することで、開発者は MySQL の階層構造を効果的に移動できるようになり、親子でデータに対して複雑なクエリを実行できるようになります。関係。これは、家系図から組織階層に至るまでのアプリケーションにとって特に価値があります。

以上が再帰クエリを使用して MySQL 階層データベース内のノードのすべての祖先を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート