MySQL은 기본적으로 "A의 각 레코드에 대해"와 같은 행별 루핑 구문을 지원하지 않지만 반복하는 메커니즘을 제공합니다.
한 가지 접근 방식은 개별 행에 대해 작동하는 프로시저를 만드는 것입니다. 프로시저는 쿼리처럼 실행될 수 있는 사용자 정의 코드 블록입니다. 다음은 테이블 A의 행을 반복하는 MySQL 프로시저입니다.
DROP PROCEDURE IF EXISTS ROWPERROW; DELIMITER ;; CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) FROM A INTO n; SET i=0; WHILE i<n DO INSERT INTO B(ID, VAL) SELECT (ID, VAL) FROM A LIMIT i,1; SET i = i + 1; END WHILE; End; ;; DELIMITER ; CALL ROWPERROW();
이 프로시저는 테이블 A의 행 수를 계산한 다음 각 행을 반복하여 해당 데이터를 테이블 B에 삽입합니다.
또 다른 기술은 테이블에서 행 단위로 데이터를 검색할 수 있는 커서를 사용하는 것입니다. 커서는 프로시저보다 행 순회에 대한 더 많은 제어를 제공하지만 더 장황할 수도 있습니다. 다음 MySQL 커서 예를 고려하십시오.
DROP PROCEDURE IF EXISTS cursor_ROWPERROW; DELIMITER ;; CREATE PROCEDURE cursor_ROWPERROW() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE cursor_i CURSOR FOR SELECT ID,VAL FROM A; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID, cursor_VAL; IF done THEN LEAVE read_loop; END IF; INSERT INTO B(ID, VAL) VALUES(cursor_ID, cursor_VAL); END LOOP; CLOSE cursor_i; END; ;; DELIMITER ; CALL cursor_ROWPERROW();
여기서 테이블 A에 대한 커서가 생성되어 열립니다. WHILE 루프는 커서에서 행을 가져와서 처리할 행이 더 이상 없을 때까지 처리합니다.
위 내용은 MySQL 테이블의 행을 어떻게 탐색합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!