我有一个表A,其中包含几个带条目的列。第1列是唯一的广告系列名称。表A包含所有相关的历史数据。 我有另一个表B,它包含相同的列和条目。表B中的一些条目也可以已经存在于表A中(活动名称与表A相同)但可以(不必须)包含其他列中的不同条目。 B是我的更新表,包含(某些)新数据。
现在我要做的是: 我想完全从表B到A添加所有新条目(第1列中的广告系列名称不在表中的行),并使用diffent更新/替换现有条目(第1列中的广告系列名称已在A中的行)其他栏目中的条目。
以下是一个例子:
例如,如果表A包含:
|col1 ||col2 ||col3|
+-----+
|20161512_NL_Luxus_1_DE ||Andrea ||29 |
|20161217_LC_YoBirthdayNo_A_CH ||Oscar ||38 |
|20161512_NL_SDT_4_DE ||James ||44 |
|20170117_SV_YoBirthdayYes_A_DE ||Julia ||57 |
表B包含:
|col1 ||col2 ||col3|
+------+
|20161512_NL_SDT_4_DE ||James ||44 |
|20170117_SV_YoBirthdayYes_A_DE ||George ||12 |
|20161230_LC_YoBirthdayNo_A_CH ||Hank ||97 |
|20170101_SV_YoBirthdayYes_A_DE ||Selma ||77 |
我想要一个更新表A的查询,如下所示:
|col1 ||col2 ||col3|
+-----+
|20161512_NL_Luxus_1_DE ||Andrea ||29 |
|20161217_LC_YoBirthdayNo_A_CH ||Oscar ||38 |
|20161512_NL_SDT_4_DE ||James ||44 |
|20170117_SV_YoBirthdayYes_A_DE ||George ||12 |
|20161230_LC_YoBirthdayNo_A_CH ||Hank ||97 |
|20170101_SV_YoBirthdayYes_A_DE ||Selma ||77 |
这就是我到目前为止所得到的:
INSERT INTO A SELECT * FROM B WHERE `col1` NOT IN (SELECT `col1` FROM `A`);
- >但这只是解决方案的一部分......
不幸的是我不知道如何解决这个问题...:/
提前致谢!
答案 0 :(得分:0)
如果col1
为primary key
,您可以尝试:
INSERT INTO A
SELECT * FROM B ON DUPLICATE KEY
UPDATE col2=VALUES(col2), col3=VALUES(col3);