Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL foreach цикъл

От това, което мога да събера, следващото трябва да е достатъчно, стига полетата да са това, което сте предоставили.

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

РЕДАКТИРАНЕ (с курсор)

Това трябва да е доста просто с курсор, но горещо ви съветвам да се запознаете с тях и последиците.

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. Сравнение на MongoDB, MySQL и PostGreSQL

  2. Изчерпателно ръководство за това как да използвате MySQL

  3. Проблем с добавянето на чужд ключ чрез Alter Table със съществуваща база данни MYSQL - не мога да го добавя! Помогне!

  4. Увеличете моя идентификатор в моята заявка за вмъкване

  5. Инсталиране на Percona XtraDB Cluster на CentOS 7