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