집 >데이터 베이스 >MySQL 튜토리얼 >최소 제품 ID를 기준으로 재귀 SQL 쿼리 그룹이 제품을 일치시키는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!