단일 재귀 쿼리를 사용하여 MySQL 테이블에서 모든 상위 항목 찾기
샘플이 포함된 다음 MySQL 테이블 스키마를 고려하세요. 데이터:
| ID | TITLE | CONTROLLER | METHOD | PARENT_ID | |----|-------------------|------------|-------------------|-----------| | 1 | Dashboard | admin | dashboard | 0 | | 2 | Content | admin | content | 0 | | 3 | Modules | admin | modules | 0 | ...
과제:
우리의 목표는 단일 레코드를 사용하여 특정 레코드, 즉 제목 = '카테고리'인 레코드의 모든 상위 레코드를 찾는 것입니다. SQL 쿼리.
원함 출력:
id | title | controller | method | url | parent_id ---------------------------------------------------------------- 3 | Modules | admin | modules | (NULL) | 0 17 | User Modules | modules | user_module | (NULL) | 3 31 | Categories | categories | category | (NULL) | 17
해결책:
재귀 공통 테이블 표현식(CTE)을 사용하여 테이블 계층 구조를 순회하고 원하는 테이블의 모든 상위 항목을 식별합니다. 레코드:
WITH RECURSIVE Parents AS ( SELECT id, parent_id FROM menu WHERE id = 31 UNION ALL SELECT m.id, m.parent_id FROM Parents AS p JOIN menu AS m ON p.parent_id = m.id ) SELECT m.id, m.title, m.controller, m.method, m.url, m.parent_id FROM Parents AS p JOIN menu AS m ON p.id = m.id ORDER BY p.id DESC;
설명:
이 쿼리를 실행하면 원하는 출력을 얻을 수 있으며 해당 항목의 모든 상위 항목이 나열됩니다. 카테고리 기록입니다.
위 내용은 단일 재귀 쿼리를 사용하여 MySQL 테이블에서 레코드의 모든 조상을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!