집 >데이터 베이스 >MySQL 튜토리얼 >MSSQL CTE 기반 범주 트리 쿼리를 MySQL로 마이그레이션하는 방법은 무엇입니까?
MSSQL CTE 쿼리를 MySQL로 변환
공통 테이블 표현식(CTE)은 Microsoft SQL Server의 재귀 쿼리를 위한 강력한 도구입니다. 그러나 MySQL은 CTE를 지원하지 않으므로 CTE 기반 쿼리를 MySQL로 변환할 때 문제가 발생합니다.
제공된 예에서 CTE 쿼리는 지정된 항목부터 시작하여 아래에서 위로 카테고리 트리를 구축하는 데 사용됩니다. 카테고리 ID. MySQL에서 이 기능을 복제하려면 재귀 저장 프로시저를 구현해야 합니다.
재귀 저장 프로시저 생성
다음 MySQL 저장 프로시저는 MSSQL CTE의 동작을 시뮬레이션합니다. :
CREATE PROCEDURE get_category_tree(IN start_category_id INT) BEGIN DECLARE done INT DEFAULT 0; DECLARE id INT; DECLARE pid INT; DECLARE name VARCHAR(255); # Initialize the cursor DECLARE cursor_categories CURSOR FOR SELECT id, parentid, name FROM category WHERE id = start_category_id; # Open the cursor OPEN cursor_categories; # Fetch the first row FETCH cursor_categories INTO id, pid, name; # While there are more rows WHILE done = 0 DO # Print the current row SELECT id, pid, name; # If the parent ID is NULL, mark as done IF pid IS NULL THEN SET done = 1; ELSE # Move the cursor to the parent row SET start_category_id = pid; FETCH cursor_categories INTO id, pid, name; END IF; END WHILE; # Close the cursor CLOSE cursor_categories; END PROCEDURE;
사용법
저장 프로시저를 사용하려면 원하는 시작 범주 ID를 인수로 사용하여 호출하세요.
CALL get_category_tree(197);
이렇게 하면 카테고리 197부터 시작하여 루트에 도달할 때까지 계층 구조를 따라 올라가는 카테고리 트리가 인쇄됩니다.
위 내용은 MSSQL CTE 기반 범주 트리 쿼리를 MySQL로 마이그레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!