SQL Server에서는 CTE 표현식을 사용하여 무한한 수준의 부모-자식 관계를 쿼리하는 것이 쉽습니다. CTE 표현식을 지원하지 않는 버전에서는 함수 재귀를 통해서도 쉽게 달성할 수 있습니다.
MySQL에서는 이 요구 사항의 예가 약간 복잡합니다. MySQL에는 재귀를 지원하는 쿼리도 없고, 테이블 반환 함수도 없으며, 함수가 재귀를 지원하지 않기 때문에 일반적으로 루프로 구현되는 것 같습니다. 어색한. 오늘은 단일 문장으로 구현된 재귀 쿼리를 보았는데, 독특한 아이디어가 있어서 공유하고 싶습니다.
권장되는 mysql 관련 동영상 튜토리얼: "mysql tutorial"
테이블 구조 및 데이터
CREATE TABLE table1(id int, name varchar(10), parent_id int); INSERT table1 VALUES (1, ‘Home’, 0), (2, ‘About’, 1), (3, ‘Contact’, 1), (4, ‘Legal’, 2), (5, ‘Privacy’, 4), (6, ‘Products’, 1), (7, ‘Support’, 2);
ID = 5
SELECT ID.level, DATA.* FROM( SELECT @id as _id, ( SELECT @id := parent_id FROM table1 WHERE id = @id ) as _pid, @l := @l+1 as level FROM table1, (SELECT @id := 5, @l := 0 ) b WHERE @id > 0 ) ID, table1 DATA WHERE ID._id = DATA.id ORDER BY level;
인 모든 상위 쿼리 방법에 따르면 쿼리를 작성하여 확인하는 것이 쉽습니다. all children Level, 다음 쿼리 id=2 all children
SELECT ID.level, DATA.* FROM( SELECT @ids as _ids, ( SELECT @ids := GROUP_CONCAT(id) FROM table1 WHERE FIND_IN_SET(parent_id, @ids) ) as cids, @l := @l+1 as level FROM table1, (SELECT @ids :=’1’, @l := 0 ) b WHERE @ids IS NOT NULL ) id, table1 DATA WHERE FIND_IN_SET(DATA.id, ID._ids) ORDER BY level, id
이 기사에서는 MySQL에서 한 문장으로 무한 수준의 부모-자식 관계 쿼리를 구현하는 방법을 설명합니다. 자세한 내용은 PHP 중국어 웹사이트를 참고하세요.
관련 권장 사항:
진행 상태에서 SQL Server FileStream에 액세스하는 방법
SQL Server 관리자 비밀번호를 잊어버린 경우 수행할 작업
MySQL에서 concat 및 group_concat 사용에 대한 간략한 분석
위 내용은 MySQL에서 단일 문장으로 무제한 수준의 부모-자식 관계 쿼리를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!