MySQL データベースからリンク リストを取得する
MySQL データベースに保存されているリンク リスト構造から正しい順序でデータを取得するのは難しい場合があります。 MySQL は再帰クエリをサポートしていないためです。
解決策 1:ネストされた結合
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>
解決策 2: 外部解析
もう 1 つの解決策は、標準の SELECT クエリを使用して順序付けされていない方法でデータを取得し、そのリンク リスト構造を解析することです。クライアント側。このアプローチは、複雑なツリー状のデータ構造の場合により効率的です。
外部ソフトウェア ソリューション
Oracle や Microsoft SQL Server などの一部のブランドのデータベースでは、追加の SQL が提供されています。再帰クエリの構文。ただし、この機能は MySQL ではサポートされていません。
以上がMySQL データベースからリンクされたリスト データを正しい順序でフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。