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
498 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
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;
Salin selepas log masuk

<一> Kaedah 1: Penilaian pembolehubah

<二> Kaedah Dua: Pengenalpastian gaya jalan

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));
Salin selepas log masuk

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

<三> kaedah tiga: self -connection

SELECT *
FROM products
WHERE id LIKE '19/%';
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!

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