Rumah > pangkalan data > tutorial mysql > Bagaimanakah Pertanyaan SQL Rekursif Dapat Mengumpulkan Produk Dengan Cekap Berdasarkan Perhubungan Padanan?

Bagaimanakah Pertanyaan SQL Rekursif Dapat Mengumpulkan Produk Dengan Cekap Berdasarkan Perhubungan Padanan?

Patricia Arquette
Lepaskan: 2025-01-05 16:50:39
asal
269 orang telah melayarinya

How Can a Recursive SQL Query Efficiently Group Products Based on Matching Relationships?

Pertanyaan Rekursif untuk Menubuhkan Kumpulan Produk dalam Pelayan SQL

Tugas biasa dalam analisis data ialah mengenal pasti dan mengumpulkan entiti berkaitan. Dalam senario khusus ini, matlamatnya adalah untuk memproses jadual padanan produk dan menyimpannya dalam jadual berasingan, di mana setiap baris mewakili kumpulan produk. Kumpulan produk ditentukan oleh hubungan "padanan" antara produk.

Untuk mencapai ini, kami boleh menggunakan pertanyaan rekursif menggunakan Ungkapan Jadual Biasa (CTE) SQL Server. Pertanyaan rekursif membenarkan pertanyaan merujuk kepada outputnya sendiri, membolehkan pelaksanaan cantuman kompleks dan struktur seperti pepohon.

CTE, bernama "CTE," mula-mula mengenal pasti nod akar setiap kumpulan dengan memilih ID produk minimum untuk setiap produk yang tidak mempunyai produk yang sepadan. Kemudian, ia bergabung secara rekursif dengan jadual padanan untuk mengenal pasti baki produk dalam setiap kumpulan.

Pertanyaan akhir mendapatkan semula data daripada CTE dan memesan keputusan mengikut ID kumpulan. Dengan menyatakan klausa OPTION(MAXRECURSION n), kami boleh mengawal kedalaman maksimum rekursif yang dibenarkan, memastikan pertanyaan tidak memasuki gelung tak terhingga.

Berikut ialah kod SQL untuk pertanyaan rekursif:

;WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID 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;
Salin selepas log masuk

Dengan menggunakan pertanyaan rekursif ini, anda boleh mengumpulkan produk dengan berkesan berdasarkan hubungan padanan mereka dan simpan keputusan dalam jadual berasingan untuk analisis lanjut.

Atas ialah kandungan terperinci Bagaimanakah Pertanyaan SQL Rekursif Dapat Mengumpulkan Produk Dengan Cekap Berdasarkan Perhubungan Padanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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