ホームページ > データベース > mysql チュートリアル > MySQL で再帰クエリを構築する方法: バージョン 5.x および 8 のメソッド ?

MySQL で再帰クエリを構築する方法: バージョン 5.x および 8 のメソッド ?

DDD
リリース: 2025-01-25 16:06:12
オリジナル
418 人が閲覧しました

How to Build a Recursive Query in MySQL: Methods for Versions 5.x and 8 ?

MySQL で再帰クエリを構築するためのガイド

MySQL には、再帰クエリを作成するための複数のメソッドが用意されています。以下にいくつかの方法があります:

MySQL 8.0 以降

MySQL 8.0 以降では、WITH RECURSIVE 構文を使用できます:

<code class="language-sql">WITH RECURSIVE cte (id, name, parent_id) AS (
  SELECT id, name, parent_id
  FROM products
  WHERE parent_id = 19
  UNION ALL
  SELECT p.id, p.name, p.parent_id
  FROM products p
  JOIN cte ON p.parent_id = cte.id
)
SELECT * FROM cte;</code>
ログイン後にコピー

MySQL 5.x バージョン

方法 1: 変数の代入

<code class="language-sql">SELECT id,
       name,
       parent_id 
FROM   (SELECT * FROM products
         ORDER BY parent_id, id) products_sorted,
        (SELECT @pv := '19') initialisation
WHERE  FIND_IN_SET(parent_id, @pv)
AND    LENGTH(@pv := CONCAT(@pv, ',', id));</code>
ログイン後にコピー

方法 2: パス スタイル識別子

階層が id 列のパスとして表されている場合は、次のクエリを使用できます:

<code class="language-sql">SELECT *
FROM products
WHERE id LIKE '19/%';</code>
ログイン後にコピー

方法 3: 自己接続

再帰は自己結合を使用して実装できます:

<code class="language-sql">SELECT *
FROM products AS t1
JOIN products AS t2 ON t1.parent_id = t2.id
WHERE t1.parent_id = 19;</code>
ログイン後にコピー

ニーズと MySQL バージョンに最も適した方法を選択してください。

以上がMySQL で再帰クエリを構築する方法: バージョン 5.x および 8 のメソッド ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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