Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Mengambil Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?

Bagaimanakah Saya Boleh Mengambil Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?

DDD
DDDasal
2024-11-01 01:22:28779semak imbas

How Can I Fetch a Linked List in MySQL Without Recursive Queries?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn