Rumah > Artikel > pangkalan data > Bagaimanakah Saya Boleh Mengambil Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?
Mengambil Senarai Terpaut dalam Pangkalan Data MySQL
Storan pangkalan data senarai terpaut menimbulkan cabaran unik. Tidak seperti penyelesaian RDBMS lain seperti Oracle atau Microsoft SQL Server, MySQL tidak menyokong pertanyaan rekursif yang diperlukan untuk mengambil terus data senarai terpaut.
Penyelesaian kepada masalah ini, sama seperti menyimpan struktur pokok dalam RDBMS, berkisar pada pengekstrakan senarai terpaut daripada pangkalan data dan memprosesnya pada hujung pelanggan. Walau bagaimanapun, ini menimbulkan persoalan sama ada mungkin untuk menamatkan pertanyaan pada kedalaman tertentu atau berdasarkan keadaan baris.
Walaupun MySQL tidak mempunyai keupayaan pertanyaan rekursif terbina dalam, penyelesaian yang agak rumit wujud:
<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>
Had pertanyaan ini ialah prestasinya yang perlahan dan pengembalian semua hasil pada satu baris. Walau bagaimanapun, ia menyediakan cara untuk mengambil data senarai terpaut dalam kenaikan terhad mendalam.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengambil Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!