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
WITH RECURSIVE
<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>
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>
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>
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!