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 중국어 웹사이트의 기타 관련 기사를 참조하세요!