Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Dapatkan Semua ID Kanak-kanak dalam Struktur Hierarki MySQL Menggunakan Pertanyaan Tunggal?

Bagaimana untuk Dapatkan Semua ID Kanak-kanak dalam Struktur Hierarki MySQL Menggunakan Pertanyaan Tunggal?

Barbara Streisand
Lepaskan: 2025-01-25 16:12:09
asal
890 orang telah melayarinya

How to Retrieve All Child IDs in a MySQL Hierarchical Structure Using a Single Query?

kaedah penciptaan kaedah rekursif hierarki MySQL

Soalan

Anda mempunyai jadual MySQL berlapis, masing -masing mempunyai ID, nama, dan ID induk. Anda mahu menggunakan pertanyaan MySQL tunggal untuk mengambil semua sub -d yang memberikan ID induk.

Jawapan

untuk MySQL 8:

Gunakan dengan sintaks rekursif:

untuk mysql 5.x:

menggunakan pembolehubah dalaman, ID jalan, atau diri sendiri:
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
  INNER JOIN cte
          ON p.parent_id = cte.id
)
SELECT * FROM cte;
Salin selepas log masuk

<联> Pembolehubah Neilian:

<径> Pengenalpastian gaya laluan:

Nilai ID memperuntukkan maklumat hierarki (PATH):

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
kemudian gunakan pertanyaan ini:

Atas ialah kandungan terperinci Bagaimana untuk Dapatkan Semua ID Kanak-kanak dalam Struktur Hierarki MySQL Menggunakan Pertanyaan Tunggal?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan