ホームページ >データベース >mysql チュートリアル >再帰 SQL クエリでは、最小製品 ID で一致する製品をグループ化するにはどうすればよいですか?
SQL Server の再帰クエリ
最小の製品 ID でグループ化された一致する製品を取得するには、再帰クエリを使用できます。このクエリはテーブルを反復処理し、Product_ID 関係をたどって、結果を別のグループ テーブルに蓄積します。再帰的な構造により、すべての一致が識別され、結果に含まれることが保証されます。
解決策:
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
このクエリでは、CTE は、一致するものを識別する再帰的定義です。各グループの最小 Product_ID。クエリは、一致する Product_Id を持たない Product_ID を選択することから始まり、初期グループを作成します。再帰的なステップでは、クエリは CTE を matchs テーブルと結合して、一致する Product_ID を特定し、それらをグループに追加します。このプロセスは、すべての一致が処理されるまで続行されます。
最終結果は、各グループの MIN Product_ID と、そのグループに属するすべての Product_ID を含む groups という名前のテーブルです。この構造により、製品の関係とグループ化に対する効率的なクエリが可能になります。
注:
再帰の深さを制御するには、OPTION(MAXRECURSION n) 句を使用し、n を必要な最大再帰レベル。
例: SQL Fiddleデモ
https://www.sqlfiddle.com/#!18/c772e/11
以上が再帰 SQL クエリでは、最小製品 ID で一致する製品をグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。