그의 구엔 :
: 우리는 3 열이있는 단일 테이블이 있다고 가정하자 ID , PARENT_ID 및 VALUE를 .
우리는 예를 8 개 레코드를 가지고 :
ID PARENT_ID VALUE
A NULL 1
B A 1
C B 0
D C 1
E D 1
F E 1
G F 1
H G 0
어떻게 우리가 SQL 쿼리 또는 저장 프로 시저를 사용하여 확인할 수 있습니다 (MySQL을 위해 바람직) ID "G"와 레코드의 부모 레코드의 값이 0 경우? 체인에서 부모가 VALUE 0이있는 경우, 추가 등을 확인 할 필요가 없다.
이것은 부모의 전체 체인에 자식 ID와 모양을 가지고 가서 일해야 하기 전에 그 아이. 어떤 아이는 어떤 부모가없는 수 또는도 0 또는 여러 자식 레코드를 가질 수있다 부모의 체인 및 부모 레코드를 가질 수있다.
VALUE에 대해 0이 (G에 대한) 부모의 체인의 부모 레코드이기 때문에 (ID 잘임을 수익, 즉)이 예에서, 검색 ID "C"와 기록을 끝낼 것입니다.
빌 Karwin :
다음은 'G'의 조상을 통과하고 값 = 0이 그들 반환 무엇을 설명 않는 MySQL의 8.0 재귀 CTE 쿼리의 예 :
with recursive cte as (
select * from mytable where id = 'G'
union all
select t.* from cte join mytable t on t.id = cte.parent_id
) select * from cte where value = 0;
+------+-----------+-------+
| id | parent_id | value |
+------+-----------+-------+
| C | B | 0 |
+------+-----------+-------+
읽기 https://dev.mysql.com/doc/refman/8.0/en/with.html를 재귀 CTE 쿼리에 대한 자세한을 위해.