MySQL で再帰クエリを構築するためのガイド
MySQL には、再帰クエリを作成するための複数のメソッドが用意されています。以下にいくつかの方法があります:
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>
方法 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 サイトの他の関連記事を参照してください。