Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Mengulang Melalui Baris dalam Jadual MySQL Tanpa Menggunakan Prosedur?

Bagaimanakah Saya Boleh Mengulang Melalui Baris dalam Jadual MySQL Tanpa Menggunakan Prosedur?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-12 17:20:021020semak imbas

How Can I Iterate Through Rows in a MySQL Table Without Using Procedures?

Menggelung Melalui Baris dalam Jadual MySQL

Meletup melalui setiap baris dalam jadual MySQL ialah operasi biasa dalam pemprosesan data. Walaupun konsep seperti "untuk setiap rekod dalam A" wujud dalam konteks lain, MySQL mengikut pendekatan yang berbeza.

Menggunakan Gelung untuk Mengubah dan Mengemas kini Baris

Untuk melaksanakan operasi yang kompleks pada baris individu, seperti memasukkan data ke dalam jadual lain dan mengemas kini nilai medan, pendekatan berasaskan gelung boleh digunakan. Walaupun prosedur adalah pilihan yang berdaya maju, panduan ini akan menumpukan pada penyelesaian yang tidak memerlukannya.

Contoh Senario

Pertimbangkan senario di mana kita mempunyai jadual A dan B , setiap satu dengan medan ID dan VAL. Kami berhasrat untuk menyalin kandungan A ke dalam B menggunakan proses seperti gelung.

Prosedur

  1. Buat Prosedur: Sementara soalan mencadangkan mengelakkan prosedur, mereka menyediakan cara yang mudah untuk melelaran melalui baris jadual. Kita boleh mencipta prosedur yang dipanggil ROWPERROW seperti berikut:
CREATE PROCEDURE ROWPERROW()
BEGIN
    DECLARE n INT DEFAULT 0;
    DECLARE i INT DEFAULT 0;
    SELECT COUNT(*) FROM table_A INTO n;
    SET i=0;
    WHILE i<n DO 
        INSERT INTO table_B(ID, VAL) SELECT (ID, VAL) FROM table_A LIMIT i,1;
        SET i = i + 1;
    END WHILE;
End;
  1. Tetapkan Pembatas dan Laksana: Tukar pembatas untuk menghalang SQL daripada menjalankan setiap baris secara individu:
DELIMITER ;;
CALL ROWPERROW();
DELIMITER ;

Alternatif Pendekatan

Walaupun gelung menyediakan cara yang mudah untuk melelaran melalui baris, pendekatan alternatif wujud:

  1. Pertanyaan Berasaskan Set: Jika boleh, ia adalah lebih cekap untuk menggunakan pertanyaan berasaskan set yang beroperasi pada berbilang baris serentak.
  2. Kursor: Kursor membenarkan navigasi baris yang jelas, tetapi ia boleh menjadi kurang berprestasi dan lebih sukar untuk ditulis dengan betul.

Akhirnya, pendekatan terbaik bergantung pada tugas khusus di tangan dan pertimbangan prestasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Melalui Baris dalam Jadual MySQL Tanpa Menggunakan Prosedur?. 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