Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kumpulan Pertanyaan SQL Rekursif Boleh Memadankan Produk mengikut ID Produk Minimum?

Bagaimanakah Kumpulan Pertanyaan SQL Rekursif Boleh Memadankan Produk mengikut ID Produk Minimum?

Barbara Streisand
Barbara Streisandasal
2025-01-05 11:27:39267semak imbas

How Can a Recursive SQL Query Group Matching Products by Minimum Product ID?

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!

Kenyataan:
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