Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membina Pertanyaan Rekursif dalam MySQL: Kaedah untuk Versi 5.x dan 8 ?

Bagaimana untuk Membina Pertanyaan Rekursif dalam MySQL: Kaedah untuk Versi 5.x dan 8 ?

DDD
Lepaskan: 2025-01-25 16:06:12
asal
417 orang telah melayarinya

How to Build a Recursive Query in MySQL: Methods for Versions 5.x and 8 ?

Membina kaedah pertanyaan rekursif dalam mysql

MySQL menyediakan pelbagai kaedah untuk membuat pertanyaan rekursif. Berikut adalah beberapa kaedah:

MySQL 8.0 dan di atas versi

Untuk versi MySQL 8.0 dan lebih tinggi, anda boleh menggunakan

tatabahasa:

WITH RECURSIVE

versi mysql 5.x
<code class="language-sql">WITH RECURSIVE cte (id, name, parent_id) AS (
  SELECT id, name, parent_id
  FROM products
  WHERE parent_id = 19
  UNION ALL
  SELECT p.id, p.name, p.parent_id
  FROM products p
  JOIN cte ON p.parent_id = cte.id
)
SELECT * FROM cte;</code>
Salin selepas log masuk

Kaedah 1: Penilaian pembolehubah

Kaedah Dua: Pengenalpastian gaya jalan

<code class="language-sql">SELECT id,
       name,
       parent_id 
FROM   (SELECT * FROM products
         ORDER BY parent_id, id) products_sorted,
        (SELECT @pv := '19') initialisation
WHERE  FIND_IN_SET(parent_id, @pv)
AND    LENGTH(@pv := CONCAT(@pv, ',', id));</code>
Salin selepas log masuk

Jika struktur hierarki anda dinyatakan dalam bentuk dalam lajur ID, anda boleh menggunakan pertanyaan berikut:

kaedah tiga: self -connection

<code class="language-sql">SELECT *
FROM products
WHERE id LIKE '19/%';</code>
Salin selepas log masuk
anda boleh menggunakan diri sendiri untuk mencapai rekursi:

Pilih kaedah yang terbaik memenuhi keperluan anda dan versi MySQL.

Atas ialah kandungan terperinci Bagaimana untuk Membina Pertanyaan Rekursif dalam MySQL: Kaedah untuk Versi 5.x dan 8 ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan