Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melakukan Pertanyaan Rekursif dalam SQLite3?

Bagaimanakah Saya Boleh Melakukan Pertanyaan Rekursif dalam SQLite3?

DDD
DDDasal
2024-12-31 10:57:10605semak imbas

How Can I Perform Recursive Queries in SQLite3?

Pertanyaan Rekursif dalam SQLite3: Panduan Komprehensif

Walaupun SQLite3 dari segi sejarah kekurangan sokongan untuk pertanyaan rekursif, kemajuan terkini telah memperkenalkan keupayaan ini dengan pengenalan ungkapan jadual biasa (CTE) dalam versi 3.8.3.

Dengan CTE Rekursif (SQLite 3.8.3 atau Lebih Tinggi)

SQLite3 kini menawarkan pernyataan WITH, yang membenarkan definisi CTE rekursif. Menggunakan CTE rekursif, anda boleh melakukan pertanyaan rekursif dengan mudah:

WITH RECURSIVE Subparts AS (
    SELECT Part, SuperPart
    FROM Part
    WHERE SuperPart IS NULL
    UNION
    SELECT Part, SuperPart
    FROM Subparts
    JOIN Part
    ON Subparts.SuperPart = Part.Part
)
SELECT *
FROM Subparts;

Pertanyaan Rekursif dalam Versi SQLite3 Terdahulu

Sebelum versi 3.8.3, SQLite3 tidak menyokong pertanyaan rekursif. Walau bagaimanapun, penyelesaian wujud dengan melaksanakan rekursi dalam kod klien:

  1. Langkah Permulaan: Dapatkan semula baris awal dan ID subbahagian.
SELECT Part, SuperPart
FROM Part
WHERE SuperPart IS NULL;
  1. Langkah Rekursif: Ambil semula secara rekursif baris dan ID subbahagian untuk subbahagian.
SELECT Part, SuperPart
FROM Part
WHERE SuperPart IN (sub-part IDs from previous step);
  1. Keadaan Berhenti: Teruskan rekursi sehingga tiada lagi subbahagian ditemui.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Pertanyaan Rekursif dalam SQLite3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn