Cara CTE Rekursif Berjalan, Baris demi Baris
CTE Rekursif, biasanya dirujuk sebagai pertanyaan hierarki, digunakan untuk melintasi dan mengekstrak maklumat daripada struktur data seperti pokok. Memahami cara pertanyaan ini dilaksanakan boleh menjadi mencabar.
CTE rekursif beroperasi sebagai satu siri operasi UNION ALL bersarang, menyerupai yang berikut:
WITH abcd1 AS ( SELECT * FROM @tbl WHERE ParentID IS NULL ) UNION ALL WITH abcd2 AS ( SELECT t.* FROM abcd1 JOIN @tbl t ON t.ParentID = abcd1.id ) UNION ALL WITH abcd3 AS ( SELECT t.* FROM abcd2 JOIN @tbl t ON t.ParentID = abcd2.id ) ...
Setiap lelaran blok ahli rekursif mencipta keputusan baharu yang ditetapkan dengan menyertai lelaran sebelumnya dengan jadual asas. Proses ini berterusan sehingga syarat berhenti dipenuhi, ditentukan oleh ketiadaan baris yang dikembalikan.
Dalam contoh yang disediakan:
Anchor (SELECT ... ):
Ahli Rekursif (PILIH ...):
Pengiraan Laluan:
Lelaran (UNION ALL):
Pilihan (PILIH * DARI abcd):
Adalah penting untuk ambil perhatian bahawa sauh tidak dilangkau dalam lelaran berikutnya. Sebaliknya, ia bertindak sebagai titik permulaan bagi setiap ahli rekursif untuk meneroka hierarki. Untuk mengelakkan pendua dalam hasil akhir, pengecam unik (Path) digunakan untuk membezakan antara rekod dengan nama yang sama yang wujud pada tahap berbeza dalam hierarki.
Atas ialah kandungan terperinci Bagaimanakah CTE Rekursif Melaksanakan Semua Operasi UNION Bersarangnya Langkah demi Langkah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!