Bagaimana untuk Mendapatkan Data daripada Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?

DDD
Lepaskan: 2024-11-01 02:31:02
asal
377 orang telah melayarinya

How to Retrieve Data from a Linked List in MySQL Without Recursive Queries?

Mengambil Data Senarai Terpaut dalam MySQL

Dalam pangkalan data MySQL, anda menghadapi struktur jadual seperti yang disediakan di bawah:

table
    id INT NOT NULL PRIMARY KEY
    data ...
    next_id INT NULL
Salin selepas log masuk

Tugasnya adalah untuk mendapatkan semula data mengikut susunan senarai terpaut. Pertimbangkan data berikut sebagai contoh:

id next_id
1 2
2 4
3 9
4 3
9 NULL

Hasilnya hendaklah dalam susunan ini: 1, 2, 4, 3, 9.

Walau bagaimanapun, tidak seperti pangkalan data tertentu seperti Oracle dan Microsoft SQL Server, MySQL tidak menyokong pertanyaan rekursif. Masalah ini menyerupai mewakili pokok dalam pangkalan data SQL, khususnya pokok nipis dan memanjang.

Pelbagai penyelesaian wujud untuk mengurus struktur data jenis ini:

  • [Mewakili Struktur Pokok dalam SQL Pangkalan Data](https://stackoverflow.com/questions/2321851/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tr)
  • [Pertanyaan SQL Rekursif](https://stackoverflow.com/questions/71469/is-it-possible-to-make-a-recursive-sql-query)

Untuk mengehadkan pertanyaan "depth," gunakan teknik berikut:

<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>
Salin selepas log masuk

Walaupun prestasinya lembap, pertanyaan ini menghasilkan satu baris untuk setiap senarai terpaut.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data daripada Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!