Pelaksanaan Baris demi Baris CTE Rekursif
Ungkapan Jadual Biasa Rekursif (CTE) selalunya sukar untuk difahami, tetapi ia boleh difahami dengan memecahkan baris pelaksanaan mereka dengan baris.
Anchor
SELECT id, Name, ParentID, CAST(Name AS VARCHAR(1000)) AS Path FROM @tbl WHERE ParentId IS NULL
Ahli Rekursif
SELECT t.id, t.Name, t.ParentID, CAST((a.path + '/' + t.Name) AS VARCHAR(1000)) AS "Path" FROM @tbl AS t JOIN abcd AS a ON t.ParentId = a.id
Kesatuan Tanpa Kesudahan SEMUA
Fikirkan CTE rekursif sebagai UNION ALL tanpa henti yang berkembang secara mendatar, menambah tahap hierarki baharu dengan setiap lelaran. Contohnya, abcd2 akan menyertakan nod anak abcd1, abcd3 akan menyertakan nod anak abcd2 dan seterusnya.
Setiap Lelaran
Berhenti Keadaan
Secara teorinya, CTE rekursif boleh berjalan tanpa had. Walau bagaimanapun, SQL Server menghalang set rekod tak terhingga dengan melaksanakan keadaan berhenti. Apabila ahli rekursif gagal menghasilkan sebarang baris baharu, lelaran berhenti.
Dalam contoh ini, apabila ahli rekursif gagal mencari nod anak untuk tahap abcd6, lelaran tamat.
Keputusan Akhir
Keputusan akhir ialah pokok hierarki lengkap, bermula dengan nod peringkat atas dan berkembang ke peringkat terendah. Lajur Path menyediakan laluan penuh kepada setiap nod dalam hierarki.
Atas ialah kandungan terperinci Bagaimanakah CTE Rekursif Melaksanakan Baris demi Baris dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!