Heim  >  Artikel  >  Datenbank  >  Wie durchlaufe ich Zeilen in MySQL-Tabellen?

Wie durchlaufe ich Zeilen in MySQL-Tabellen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-13 14:37:02638Durchsuche

How do I Traverse Rows in MySQL Tables?

Zeilen in MySQL-Tabellen durchlaufen

Obwohl MySQL keine zeilenweise Schleifensyntax wie „für jeden Datensatz in A“ unterstützt, bietet es Mechanismen zum Iterieren systematisch durch Tabellenzeilen gehen.

Prozeduren verwenden

Ein Ansatz besteht darin, eine Prozedur zu erstellen, die Arbeitet an einzelnen Zeilen. Prozeduren sind benutzerdefinierte Codeblöcke, die wie Abfragen ausgeführt werden können. Hier ist eine MySQL-Prozedur, die Zeilen in Tabelle A durchläuft:

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();

Diese Prozedur zählt die Zeilen in Tabelle A, durchläuft dann jede Zeile und fügt ihre Daten in Tabelle B ein.

Verwenden Cursor

Eine andere Technik ist die Verwendung von Cursorn, mit denen Sie Daten Zeile für Zeile aus einer Tabelle abrufen können. Cursor bieten mehr Kontrolle über den Zeilendurchlauf als Prozeduren, können aber auch ausführlicher sein. Betrachten Sie das folgende MySQL-Cursor-Beispiel:

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();

Hier wird ein Cursor für Tabelle A erstellt und geöffnet. Die WHILE-Schleife ruft Zeilen vom Cursor ab und verarbeitet sie, bis keine weiteren Zeilen mehr zu verarbeiten sind.

Das obige ist der detaillierte Inhalt vonWie durchlaufe ich Zeilen in MySQL-Tabellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn