각 레코드에 ID, 이름, 상위 ID가 있는 계층 구조가 있는 MySQL 테이블이 있습니다. 단일 MySQL 쿼리를 사용하여 특정 상위 ID의 모든 하위 ID를 검색하려고 합니다.
MySQL 8의 경우:
WITH RECURSIVE 구문 사용:
<code class="language-sql">WITH RECURSIVE cte (id, name, parent_id) AS ( SELECT id, name, parent_id FROM products WHERE parent_id = 19 UNION ALL SELECT p.id, p.name, p.parent_id FROM products p INNER JOIN cte ON p.parent_id = cte.id ) SELECT * FROM cte;</code>
MySQL 5.x의 경우:
인라인 변수, 경로 ID 또는 자체 조인 사용:
인라인 변수:
<code class="language-sql">SELECT id, name, parent_id FROM (SELECT * FROM products ORDER BY parent_id, id) products_sorted, (SELECT @pv := '19') initialisation WHERE FIND_IN_SET(parent_id, @pv) AND LENGTH(@pv := CONCAT(@pv, ',', id))</code>
경로 스타일 식별자:
계층 정보(경로)가 포함된 ID 값 할당:
<code>ID | NAME --------|-------- 19 | category1 19/1 | category2 19/1/1 | category3 19/1/1/1 | category4</code>
그런 다음 다음 쿼리를 사용하세요.
<code class="language-sql">SELECT * FROM products WHERE ID LIKE '19/1/1/%'</code>
위 내용은 단일 쿼리를 사용하여 MySQL 계층 구조에서 모든 하위 ID를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!