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