Bolehkah MySQL Dapatkan Data Senarai Terpaut Tanpa Pemprosesan Sebelah Pelanggan?

Susan Sarandon
Lepaskan: 2024-11-04 08:38:30
asal
872 orang telah melayarinya

Can MySQL Retrieve Linked List Data Without Client-Side Processing?

Mengambil Data Senarai Terpaut daripada Pangkalan Data MySQL

Soalan:

Diberikan jadual pangkalan data MySQL dengan struktur:

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

Bolehkah anda mendapatkan semula data dalam susunan senarai terpaut menggunakan pertanyaan pangkalan data, tanpa menggunakan pemprosesan sebelah klien?

Jawapan:

Malangnya, MySQL tidak menyokong pertanyaan rekursif, yang diperlukan untuk mendapatkan semula data senarai terpaut dengan cekap. Masalah ini serupa dengan mewakili struktur pokok dalam pangkalan data hubungan.

Pendekatan Alternatif:

Rujuk soalan berikut untuk kaedah alternatif menyimpan dan mendapatkan semula seperti pokok data daripada sistem pangkalan data hubungan:

  • "Apakah cara yang paling cekap/elegan untuk menghuraikan jadual rata ke dalam pokok?"
  • "Adakah mungkin untuk membuat SQL rekursif pertanyaan ?"

Pertanyaan dengan Kedalaman Terhad:

Jika anda ingin mengehadkan kedalaman hasil pertanyaan, anda boleh menggunakan pendekatan berikut, walaupun dengan prestasi buruk:

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

Hasilnya akan dikembalikan dalam satu baris untuk setiap senarai terpaut, tetapi prestasi pertanyaan akan menjadi perlahan.

Atas ialah kandungan terperinci Bolehkah MySQL Dapatkan Data Senarai Terpaut Tanpa Pemprosesan Sebelah Pelanggan?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan