Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Vòng lặp foreach MySQL

Từ những gì tôi có thể thu thập, những điều sau đây là đủ, miễn là các trường là những gì bạn đã cung cấp.

INSERT INTO Address (email)
  SELECT User.email
    FROM User JOIN person ON User.id_person = person.id
   WHERE person.id_address IS NULL
;

CHỈNH SỬA (với Con trỏ)

Điều này sẽ khá đơn giản với một con trỏ, tuy nhiên, tôi thực sự khuyên bạn nên tự làm quen với chúng và các hàm ý.

DROP PROCEDURE IF EXISTS _tmp_update_address;
DELIMITER $$
CREATE PROCEDURE _tmp_update_address()
BEGIN
   DECLARE cursor_List_isdone BOOLEAN DEFAULT FALSE;
   DECLARE cur_userId, cur_personId INT;
   DECLARE cur_email VARCHAR(250) DEFAULT '';

   DECLARE cursor_List CURSOR FOR 
      SELECT User.id, person.id_address, User.email
      FROM User JOIN person ON User.id_person = person.id
      WHERE person.id_address IS NULL
    ;

   DECLARE CONTINUE HANDLER FOR NOT FOUND SET cursor_List_isdone = TRUE;

   OPEN cursor_List;

   loop_List: LOOP
      FETCH cursor_List INTO cur_userId, cur_personId, cur_email;
      IF cursor_List_isdone THEN
         LEAVE loop_List;
      END IF;

      INSERT INTO Address (email) VALUES (cur_email);
      UPDATE person SET person.id_address = LAST_INSERT_ID()
         WHERE person.id = cur_personId;

   END LOOP loop_List;

   CLOSE cursor_List;
END

$$

DELIMITER ;

CALL _tmp_update_address();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng JDeveloper với Cơ sở dữ liệu MySQL và Cơ sở dữ liệu Oracle trên AWS RDS, Phần 1

  2. MySQL # 1140 - Kết hợp các cột NHÓM

  3. Rows_sent:12 Rows_examined:549024 - làm thế nào để tối ưu hóa truy vấn mySQL?

  4. Cách nhận dữ liệu tuần hiện tại trong MySQL

  5. PHP / MySQL 2 câu lệnh 'while' từ 1 truy vấn mysql?