У меня есть таблица с неполными данными поля в каждой строке, которую я хочу исправить.
Вот что я имею в виду:
mysql> CREATE TABLE test (
key INT
a CHAR(1),
b CHAR(1),
c CHAR(1),
);
mysql> CREATE TABLE test2 (
key INT
a CHAR(1),
b CHAR(1),
c CHAR(1),
);
mysql> INSERT INTO test (1,'','','');
mysql> INSERT INTO test (2,'X','','');
mysql> INSERT INTO test (3,'','Y','');
mysql> INSERT INTO test2 (2,'X','','Z');
mysql> INSERT INTO test2 (4,'X','Y','Z');
Я бы хотел неразрушающим образом «объединить» данные test2 в тест на основе поля «ключ», чтобы:
- если в тестируемом поле уже есть непустое значение для данного ключа, оно сохраняется.
- если поле в тесте имеет пустое значение и соответствующее поле в test2 не пусто, значение из test2 заменяет соответствующее поле в тесте для данного ключа.
- если поля в test и test2 не являются пустыми и отличаются, ничего не делать.
После «слияния» я хотел бы, чтобы данные таблицы «test» выглядели так:
(1,'','','');
(2,'X','','Z');
(3,'','Y','');
(4,'X','Y','Z');
Вроде как заполнение отверстий в тестовой таблице, без заусенцев.
Кто-нибудь может придумать, как это сделать?