Rumah >pangkalan data >tutorial mysql >Bagaimanakah CTE Rekursif Melaksanakan Baris demi Baris: Penjelasan Langkah demi Langkah?
Pelaksanaan CTE Rekursif, Baris demi Baris
Ungkapan Jadual Biasa Rekursif (CTE) ialah binaan SQL berkuasa yang membolehkan pertanyaan rekursif. Untuk memahami cara ia melaksanakan, pertimbangkan ia sebagai satu siri operasi UNION ALL.
Pertimbangkan contoh yang disediakan:
DECLARE @tbl TABLE ( Id INT , [Name] VARCHAR(20) , ParentId INT );
Baris 1-2: Tentukan jadual struktur.
Baris 3-16: Masukkan rekod ke dalam jadual.
Baris 19-24: Takrifkan abcd CTE rekursif.
Baris 19: Ungkapan sauh mentakrifkan lelaran awal CTE dengan memilih rekod di mana ParentId berada NULL.
Baris 20-22: Ungkapan rekursif mengembangkan CTE dengan memilih rekod anak dan menggabungkan nama mereka dengan laluan ibu bapa dalam lajur Laluan.
Baris 25: Pilih daripada abcd CTE untuk mendapatkan semula perlawanan akhir hasil.
Langkah Pelaksanaan:
1. Laksanakan ungkapan sauh (baris 19), yang mengembalikan hasil berikut:
Id | Name | ParentId | Path |
---|---|---|---|
1 | Europe | NULL | Europe |
2 | Asia | NULL | Asia |
2. Laksanakan ungkapan rekursif (baris 20-22) menggunakan hasil daripada ungkapan sauh. Ini menghasilkan:
Id | Name | ParentId | Path |
---|---|---|---|
3 | Germany | 1 | Europe/Germany |
4 | UK | 1 | Europe/UK |
5 | China | 2 | Asia/China |
6 | India | 2 | Asia/India |
3. Ulang langkah 2 sehingga tiada lagi rekod kanak-kanak ditemui, menghasilkan:
Id | Name | ParentId | Path |
---|---|---|---|
7 | Scotland | 4 | Europe/UK/Scotland |
8 | Edinburgh | 7 | Europe/UK/Scotland/Edinburgh |
9 | Leith | 8 | Europe/UK/Scotland/Edinburgh/Leith |
4. Gabungkan semua keputusan daripada setiap lelaran untuk mendapatkan hasil akhir yang ditunjukkan dalam pernyataan SELECT (baris 25).
Mengapa Sauh tidak Berulang:
Ungkapan sauh mentakrifkan titik permulaan awal untuk rekursi. Walaupun ia dilaksanakan dalam setiap lelaran, ia berbeza daripada ungkapan rekursif, yang mengembangkan set hasil. Oleh itu, rekod sauh hanya disertakan sekali.
Atas ialah kandungan terperinci Bagaimanakah CTE Rekursif Melaksanakan Baris demi Baris: Penjelasan Langkah demi Langkah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!