Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Semua Leluhur Rekod dalam Jadual MySQL Menggunakan Pertanyaan Rekursif Tunggal?
Mencari Semua Ibu Bapa dalam Jadual MySQL dengan Pertanyaan Rekursif Tunggal
Pertimbangkan skema jadual MySQL berikut dengan data sampel:
| ID | TITLE | CONTROLLER | METHOD | PARENT_ID | |----|-------------------|------------|-------------------|-----------| | 1 | Dashboard | admin | dashboard | 0 | | 2 | Content | admin | content | 0 | | 3 | Modules | admin | modules | 0 | ...
Cabaran:
Matlamat kami adalah untuk mencari semua ibu bapa rekod tertentu, iaitu satu dengan tajuk = 'Kategori', menggunakan satu pertanyaan SQL.
Output yang Diingini:
id | title | controller | method | url | parent_id ---------------------------------------------------------------- 3 | Modules | admin | modules | (NULL) | 0 17 | User Modules | modules | user_module | (NULL) | 3 31 | Categories | categories | category | (NULL) | 17
Penyelesaian:
Kami menggunakan ungkapan jadual biasa rekursif (CTE) untuk melintasi jadual hierarki dan kenal pasti semua nenek moyang rekod yang dikehendaki:
WITH RECURSIVE Parents AS ( SELECT id, parent_id FROM menu WHERE id = 31 UNION ALL SELECT m.id, m.parent_id FROM Parents AS p JOIN menu AS m ON p.parent_id = m.id ) SELECT m.id, m.title, m.controller, m.method, m.url, m.parent_id FROM Parents AS p JOIN menu AS m ON p.id = m.id ORDER BY p.id DESC;
Penjelasan:
Dengan melaksanakan pertanyaan ini, kami memperoleh output yang diingini, menyenaraikan semua ibu bapa rekod Kategori.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Semua Leluhur Rekod dalam Jadual MySQL Menggunakan Pertanyaan Rekursif Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!