Soalan:
Diberikan jadual pangkalan data MySQL dengan struktur:
table id INT NOT NULL PRIMARY KEY data .. next_id INT NULL
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:
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);
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!