在 SQL Server 中遞歸查詢建立產品群組
資料分析中的一個常見任務是識別和分組相關實體。在此特定場景中,目標是處理產品匹配表並將它們儲存在單獨的表中,其中每一行代表一個產品組。產品組由產品之間的「匹配」關係決定。
為了實現這一點,我們可以使用 SQL Server 的公用表格運算式 (CTE) 進行遞迴查詢。遞歸查詢允許查詢引用其自己的輸出,從而能夠實現複雜的連接和樹狀結構。
CTE,名為“CTE”,首先透過選擇沒有匹配產品的每個產品的最小產品 ID。然後,它遞歸地與匹配表連接以識別每個組中的剩餘產品。
最終查詢從 CTE 擷取資料並依群組 ID 對結果進行排序。透過指定 OPTION(MAXRECURSION n) 子句,我們可以控制允許的最大遞歸深度,確保查詢不會進入無限迴圈。
以下是遞迴查詢的SQL 程式碼:
;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;
透過使用此遞歸查詢,您可以根據產品的匹配關係對產品進行有效分組,並將結果儲存在單獨的表中以供進一步使用分析。
以上是遞歸SQL查詢如何根據匹配關係有效地對產品進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!