SQL에서 아이의 모든 부모 레코드의 열 값을 확인하는 방법

그의 구엔 :

: 우리는 3 열이있는 단일 테이블이 있다고 가정하자 ID , PARENT_IDVALUE를 .

우리는 예를 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 쿼리에 대한 자세한을 위해.

추천

출처http://43.154.161.224:23101/article/api/json?id=372793&siteId=1