"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SQL Server의 제품과 일치하기 위해 재귀 쿼리 그룹을 사용하는 방법은 무엇입니까?

SQL Server의 제품과 일치하기 위해 재귀 쿼리 그룹을 사용하는 방법은 무엇입니까?

2025-04-19에 게시되었습니다
검색:320

How to Group Matched Products in SQL Server Using Recursive Queries?

CTE 처럼 ( 별개의 선택을 선택하십시오 m1.product_id as group_id, m1.product_id 일치 M1 왼쪽 결합은 M2와 일치합니다 m1.product_id = m2.matching_product_id 여기서 m2.matching_product_id는 null입니다 모두 선택하다 c.group_id, M.matching_product_id cte에서 c 매치에 가입 m c.product_id = m.product_id에서 )) group_id

의 cte order에서 * 선택 * 재귀의 기본 케이스는 제품에 일치하지 않는 경우입니다.이 경우 자체 그룹을 형성합니다. 이것은 CTE의 첫 번째 부분에서 포착됩니다.

별개의 선택 m1.product_id as group_id, m1.product_id 일치 M1 왼쪽 결합은 M2와 일치합니다 m1.product_id = m2.matching_product_id 여기서 m2.matching_product_id는 null

CTE의 재귀 부분은 각 그룹의 모든 일치 제품을 찾습니다. 이 일치하는 제품을 그룹에 반복적으로 추가합니다.

select c.group_id, M.matching_product_id cte에서 c 매치에 가입 m on c.product_id = m.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
마지막으로, 마지막으로, 우리는 "group_id"열로 CTE를 정렬하여 계층 적 순서를 검색 할 수 있습니다. 계층 적 관계는 "Group_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
SQL Server의 재귀 기능을 활용하여 복잡한 데이터베이스 구조에서 복잡한 계층 적 패턴 및 그룹 관련 데이터를 효율적으로 추출 할 수 있습니다.

.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3