Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya Melintasi Baris dalam Jadual MySQL?

Bagaimanakah saya Melintasi Baris dalam Jadual MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-13 14:37:02741semak imbas

How do I Traverse Rows in MySQL Tables?

Melintasi Baris dalam Jadual MySQL

Walaupun MySQL tidak menyokong sintaks gelung baris demi baris secara asli seperti "untuk setiap rekod dalam A," ia menyediakan mekanisme untuk lelaran melalui baris jadual secara sistematik.

Menggunakan Prosedur

Satu pendekatan ialah mencipta prosedur yang beroperasi pada baris individu. Prosedur ialah blok kod yang ditentukan pengguna yang boleh dilaksanakan seperti pertanyaan. Berikut ialah prosedur MySQL yang melingkari baris dalam jadual A:

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

Prosedur ini mengira baris dalam jadual A, kemudian melelang melalui setiap baris dan memasukkan datanya ke dalam jadual B.

Menggunakan Kursor

Teknik lain ialah menggunakan kursor, yang membolehkan anda mendapatkan semula data daripada jadual baris demi baris. Kursor memberikan lebih kawalan ke atas lintasan baris daripada prosedur tetapi juga boleh menjadi lebih bertele-tele. Pertimbangkan contoh kursor MySQL berikut:

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

Di sini, kursor dicipta untuk jadual A dan dibuka. Gelung WHILE mengambil baris daripada kursor dan memprosesnya sehingga tiada lagi baris untuk diproses.

Atas ialah kandungan terperinci Bagaimanakah saya Melintasi Baris dalam Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn