Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kumpulan Pertanyaan SQL Rekursif Boleh Memadankan Produk mengikut ID Produk Minimum?
Pertanyaan Rekursif dalam Pelayan SQL
Untuk mendapatkan semula produk yang sepadan yang dikumpulkan mengikut ID Produk minimum mereka, pertanyaan rekursif boleh digunakan. Pertanyaan ini berulang melalui jadual, merentasi perhubungan Product_ID dan mengumpul hasil dalam jadual kumpulan yang berasingan. Struktur rekursif memastikan semua padanan dikenal pasti dan disertakan dalam keputusan.
Penyelesaian:
WITH CTE AS ( SELECT DISTINCT M1.Product_ID AS Group_ID, M1.Product_ID FROM matches M1 LEFT JOIN matches M2 ON M1.Product_Id = M2.matching_Product_Id WHERE M2.matching_Product_Id IS NULL UNION ALL SELECT C.Group_ID, M.matching_Product_Id FROM CTE C JOIN matches M ON C.Product_ID = M.Product_ID ) SELECT * FROM CTE ORDER BY Group_ID
Dalam pertanyaan ini, CTE ialah definisi rekursif yang mengenal pasti ID_Produk minimum untuk setiap kumpulan. Pertanyaan bermula dengan memilih Product_IDs yang tidak mempunyai Product_Id yang sepadan, mencipta kumpulan awal. Dalam langkah rekursif, pertanyaan bergabung dengan CTE dengan jadual padanan untuk mengenal pasti Product_ID yang sepadan dan menambahkannya pada kumpulan. Proses ini berterusan sehingga semua padanan diproses.
Keputusan akhir ialah jadual bernama kumpulan yang mengandungi MIN Product_ID untuk setiap kumpulan, bersama-sama dengan semua Product_ID yang tergolong dalam kumpulan itu. Struktur ini membolehkan pertanyaan yang cekap tentang perhubungan dan pengelompokan produk.
Nota:
Untuk mengawal kedalaman rekursi, gunakan klausa OPTION(MAXRECURSION n), menggantikan n dengan tahap rekursi maksimum yang dikehendaki.
Contoh: SQL Fiddle Demo
https://www.sqlfiddle.com/#!18/c772e/11
Atas ialah kandungan terperinci Bagaimanakah Kumpulan Pertanyaan SQL Rekursif Boleh Memadankan Produk mengikut ID Produk Minimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!