Rumah > Artikel > pangkalan data > Bagaimanakah Saya Boleh Cari Semua Leluhur Nod dalam Jadual Hierarki MySQL Menggunakan Pertanyaan Tunggal?
Mencari semua ibu bapa dalam jadual MySQL dengan satu pertanyaan menggunakan CTE Rekursif
Dalam pangkalan data dengan struktur hierarki, mengenal pasti ibu bapa rekod tertentu boleh menjadi tugas yang kompleks. Dalam MySQL, cabaran ini boleh ditangani dengan cekap menggunakan Recursive Common Table Expression (CTE). Mari kita terokai penyataan masalah dan penyelesaiannya.
Pernyataan Masalah:
Diberikan jadual MySQL dengan struktur hierarki (seperti yang terdapat dalam skema yang disediakan), di mana setiap baris mewakili nod dengan ID, tajuk, ID induk dan maklumat lain yang berkaitan, tugasnya adalah untuk mendapatkan semua nenek moyang (ibu bapa) nod tertentu dalam hierarki dengan satu pertanyaan.
Penyelesaian:
Penyelesaian yang disediakan memanfaatkan CTE Rekursif untuk melintasi hierarki dan mengenal pasti ibu bapa nod yang ditentukan dengan IDnya. Pertanyaan berikut menunjukkan pendekatan:
SELECT T2.id, T2.title, T2.controller, T2.method, T2.url FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM menu WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := 31, @l := 0) vars, menu m WHERE @r <> 0) T1 JOIN menu T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;
Penjelasan Pertanyaan:
Pertanyaan ini dengan cekap mendapatkan semula semua ibu bapa nod yang ditentukan dengan satu pernyataan SQL, menyediakan penyelesaian yang mudah dan berprestasi untuk menavigasi data hierarki dalam MySQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Semua Leluhur Nod dalam Jadual Hierarki MySQL Menggunakan Pertanyaan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!