sql >> データベース >  >> RDS >> Mysql

MySQLデータベースでのリンクリストの取得

    一部のブランドのデータベース(Oracle、Microsoft SQL Serverなど)は、「再帰クエリ」を実行するための追加のSQL構文をサポートしていますが、MySQLはそのようなソリューションをサポートしていません。

    説明している問題は、SQLデータベースでツリー構造を表すのと同じです。長くて細い木があります。

    この種のデータ構造をRDBMSから保存およびフェッチするには、いくつかのソリューションがあります。次の質問のいくつかを参照してください:

    クエリによって返される「深さ」を制限したいということなので、次の方法でリストをクエリするときにこれを実現できます。

    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);
    

    糖蜜のように機能し、結果はすべて1行に戻ります(リンクリストごと)が、結果は得られます。



    1. sqldeveloperの挿入ステートメントからBLOB列に挿入するにはどうすればよいですか?

    2. SQLServerで使用できるさまざまな種類の制約-SQLServer/T-SQLチュートリアルパート50

    3. T-SQLでパーセント記号をエスケープするにはどうすればよいですか?

    4. MariaDBにすべてのストアドプロシージャを一覧表示する方法