Update столбца данными из таблицы другой базы - MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. прошу помощи. есть две базы: db_backup_new, db_backup_old. в первой таблица (content) с поврежденными данными. во второй таблица с бекапом. надо обновить первую таблицу. SHOW CREATE TABLE content:
Листинг программы
  1. CREATE TABLE `content` (
  2. `id` INT(6) NOT NULL AUTO_INCREMENT,
  3. `title` mediumtext CHARACTER SET cp1251 NOT NULL,
  4. `title_en` mediumtext CHARACTER SET cp1251,
  5. `description` mediumtext CHARACTER SET cp1251,
  6. `text` longtext CHARACTER SET cp1251,
  7. `text_en` longtext CHARACTER SET cp1251,
  8. `def_image` VARCHAR(50) CHARACTER SET cp1251 DEFAULT NULL,
  9. `posted_date` DATE NOT NULL DEFAULT '0000-00-00',
  10. `param` VARCHAR(100) CHARACTER SET cp1251 NOT NULL,
  11. `part` VARCHAR(50) CHARACTER SET cp1251 NOT NULL DEFAULT '/',
  12. PRIMARY KEY (`id`),
  13. KEY `param` (`param`)
  14. ) ENGINE=MyISAM AUTO_INCREMENT=6052 DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_ci COMMENT='Site Content'
выполняю 2 запроса:
Листинг программы
  1. UPDATE db_backup_new.content AS NEW
  2. SET NEW.title = (SELECT OLD.title FROM db_backup_old.content AS OLD WHERE NEW.id = OLD.id )
  3. UPDATE db_backup_new.content AS NEW
  4. SET NEW.description = (SELECT OLD.description FROM db_backup_old.content AS OLD WHERE NEW.id = OLD.id )
результат: в первой таблице в столбцах (title, description) обновляются строки с id, который есть в обоих таблицах. НО все остальные строки из обновляемого столбца первой таблицы превращаются в NULL - те, id которых отсутствуют во второй и которые не должны быть изменены. на примере выглядит так:
первая таблица
1 - текст
2 - текст
3 - текст
4 - текст
5 - текст
вторая таблица
1 - бекаптекст
2 - бекаптекст
3 - бекаптекст
результат обновления в первой
1 - бекаптекст
2 - бекаптекст
3 - бекаптекст
4 - NULL
5 - NULL
требуемый результат
1 - бекаптекст
2 - бекаптекст
3 - бекаптекст
4 - текст
5 - текст
вопросы: почему оно трогает записи, которых нет во второй таблице? как получить требуемый результат?

Решение задачи: «Update столбца данными из таблицы другой базы»

textual
Листинг программы
  1. UPDATE db_backup_new.content AS NEW, db_backup_old.content AS OLD
  2. SET NEW.title = OLD.title, NEW.description = OLD.description
  3. WHERE NEW.id = OLD.id

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы