Sertai Kendiri Rekursif dalam Pelayan SQL
Dalam Pelayan SQL, sambung kendiri rekursif membolehkan anda menavigasi struktur data hierarki dengan menyertai jadual kepada dirinya sendiri beberapa kali berdasarkan perhubungan ibu bapa-anak.
Untuk melakukan penyambungan diri rekursif ke mendapatkan semula rekod yang berkaitan dengan hierarki tertentu, strategi berikut boleh digunakan:
Menggunakan Ungkapan Jadual Biasa (CTE)
CTE, juga dikenali sebagai pertanyaan rekursif , boleh digunakan untuk melaksanakan sambung diri rekursif. Idea teras adalah untuk mentakrifkan pertanyaan utama yang memilih rekod yang memenuhi kriteria tertentu (mis., tiada ibu bapa) dan kemudian menggunakan subkueri rekursif untuk menambahkan rekod anak pada hasil:
WITH q AS ( SELECT * FROM mytable WHERE ParentID IS NULL UNION ALL SELECT m.* FROM mytable m JOIN q ON m.parentID = q.PersonID ) SELECT * FROM q
Dengan menambahkan pesanan syarat kepada subkueri rekursif, susunan pokok boleh dipelihara:
WITH q AS ( SELECT m.*, CAST(ROW_NUMBER() OVER (ORDER BY m.PersonId) AS VARCHAR(MAX)) COLLATE Latin1_General_BIN AS bc FROM mytable m WHERE ParentID IS NULL UNION ALL SELECT m.*, q.bc + '.' + CAST(ROW_NUMBER() OVER (PARTITION BY m.ParentID ORDER BY m.PersonID) AS VARCHAR(MAX)) COLLATE Latin1_General_BIN FROM mytable m JOIN q ON m.parentID = q.PersonID ) SELECT * FROM q ORDER BY bc
Pertimbangan:
Atas ialah kandungan terperinci Bagaimanakah Penyertaan Diri Rekursif dalam Pelayan SQL Mengemudi Data Hierarki dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!