MySQL でリンクされたリスト データを取得する
MySQL データベースでは、以下のようなテーブル構造が表示されます。
table id INT NOT NULL PRIMARY KEY data ... next_id INT NULL
タスクは、リンクされたリストの順序に従ってデータを取得することです。例として次のデータを考えてみましょう。
id | next_id |
---|---|
1 | 2 |
2 | 4 |
3 | 9 |
4 | 3 |
9 | NULL |
結果は、1、2、4、3、9 の順序になる必要があります。
ただし、Oracle やデータベースなどの特定のデータベースとは異なります。 Microsoft SQL Server、MySQL は再帰クエリをサポートしていません。この問題は、SQL データベース内のツリー、具体的には細く細長いツリーを表現するのに似ています。
このタイプのデータ構造を管理するには、さまざまなソリューションが存在します。
クエリのクエリを制限するには「深さ」では、次のテクニックを使用します:
<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 サイトの他の関連記事を参照してください。