MySQL データベースのリンク リストの取得
リンク リストのデータベース ストレージには特有の課題が生じます。 Oracle や Microsoft SQL Server などの他の RDBMS ソリューションとは異なり、MySQL はリンク リスト データを直接フェッチするために必要な再帰クエリをサポートしていません。
この問題の解決策は、RDBMS にツリー構造を格納するのと同様に、抽出を中心に展開します。データベースからリンクされたリストを取得し、クライアント側でそれを処理します。ただし、これにより、特定の深さでクエリを終了できるか、または行の条件に基づいてクエリを終了できるかどうかという問題が生じます。
MySQL には再帰クエリ機能が組み込まれていませんが、やや面倒な回避策が存在します。
<code class="sql">SELECT * FROM mytable t1 LEFT JOIN mytable t2 ON (t1.next_id = t2.id) LEFT JOIN mytable t3 ON (t2.next_id = t3.id) LEFT JOIN mytable t4 ON (t3.next_id = t4.id) LEFT JOIN mytable t5 ON (t4.next_id = t5.id) LEFT JOIN mytable t6 ON (t5.next_id = t6.id) LEFT JOIN mytable t7 ON (t6.next_id = t7.id) LEFT JOIN mytable t8 ON (t7.next_id = t8.id) LEFT JOIN mytable t9 ON (t8.next_id = t9.id) LEFT JOIN mytable t10 ON (t9.next_id = t10.id);</code>
このクエリの制限は、パフォーマンスが遅いことと、すべての結果が 1 行で返されることです。ただし、深さが制限された増分でリンク リスト データをフェッチする方法が提供されます。
以上が再帰クエリを使用せずに MySQL でリンクされたリストを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。