>데이터 베이스 >MySQL 튜토리얼 >최소 제품 ID를 기준으로 재귀 SQL 쿼리 그룹이 제품을 일치시키는 방법은 무엇입니까?

최소 제품 ID를 기준으로 재귀 SQL 쿼리 그룹이 제품을 일치시키는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-05 11:27:39271검색

How Can a Recursive SQL Query Group Matching Products by Minimum Product 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를 일치 테이블과 조인하여 일치하는 Product_ID를 식별하고 이를 그룹에 추가합니다. 이 프로세스는 모든 일치 항목이 처리될 때까지 계속됩니다.

최종 결과는 각 그룹에 대한 MIN Product_ID와 해당 그룹에 속하는 모든 Product_ID를 포함하는 groups라는 테이블입니다. 이 구조를 사용하면 제품 관계 및 그룹화에 대한 효율적인 쿼리가 가능합니다.

참고:

재귀 깊이를 제어하려면 OPTION(MAXRECURSION n) 절을 사용하고 n을 원하는 최대 재귀 수준.

예: SQL Fiddle 데모

https://www.sqlfiddle.com/#!18/c772e/11

위 내용은 최소 제품 ID를 기준으로 재귀 SQL 쿼리 그룹이 제품을 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.