0
我有一張表,其中每行都有我想修復的不完整字段數據。Mysql「安全」合併
這裏有一個我的意思:
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中的字段都是非空的並且不同,則什麼都不做。
的「合併」我想「測試」表中的數據後的樣子:像在測試表上的孔不填充任何重挫
(1,'','','');
(2,'X','','Z');
(3,'','Y','');
(4,'X','Y','Z');
類。
任何人都可以想辦法做到這一點?
哇,你們是令人難以置信! 在10分鐘內,我得到了正確的答案,這個問題一直在困擾着我好幾天! 非常感謝,WoLpH!我真的很感激它! Paul – KellerPaul 2010-04-09 00:01:50
不客氣KellerPaul :) 另外,如果你只是想插入沒有合併,但想忽略現有的行,你可以使用'INSERT IGNORE INTO' – Wolph 2010-04-09 01:20:14