sql Server:用於對匹配的產品進行分組的遞歸查詢
為此完成此操作,我們可以利用SQL中的遞歸查詢的功能。遞歸查詢在相同數據上執行多輪操作。這是一種採用常見表表達式(CTE)來跟踪遞歸操作的解決方案:遞歸的基本情況是當產品沒有匹配時,在這種情況下,它形成了自己的組。這是在CTE的第一部分中捕獲的。 m1.product_id作為group_id, m1.product_id 從匹配M1 左聯賽M2 在m1.product_id = m2.matching_product_id上 其中m2.matching_product_id為null CTE的遞歸部分找到每個組的所有匹配產品。它迭代地將這些匹配的產品添加到組中。
Finally, we can retrieve the results in hierarchical order by sorting the CTE by the "Group_ID" column.SELECT * FROM CTE ORDER BY Group_IDWITH 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_IDThis recursive query effectively produces the desired grouping of products in the "groups" table.層次關係由“ Group_ID”列捕獲,確保每行都反映了一個不同的產品組。
通過利用SQL Server的遞歸能力,我們可以有效地提取複雜的層次結構模式,並在復雜數據庫結構中提取複雜的層次結構模式和組相關數據。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3