ホームページ > データベース > mysql チュートリアル > 再帰 SQL クエリはどのようにして、一致する関係に基づいて製品を効率的にグループ化できるのでしょうか?

再帰 SQL クエリはどのようにして、一致する関係に基づいて製品を効率的にグループ化できるのでしょうか?

Patricia Arquette
リリース: 2025-01-05 16:50:39
オリジナル
269 人が閲覧しました

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

SQL Server で製品グループを確立するための再帰クエリ

データ分析における一般的なタスクは、関連するエンティティを識別してグループ化することです。この特定のシナリオの目標は、製品一致のテーブルを処理し、それらを別のテーブルに保存することであり、各行は製品グループを表します。製品グループは、製品間の「一致」関係によって決定されます。

これを実現するには、SQL Server の Common Table Expression (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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート