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!