Mysql基于两个表插入和更新多个字段
当主键ID不匹配时,我尝试将字段插入表中。。。如果存在匹配项,则更新字段,以免覆盖行 我目前的尝试是:Mysql基于两个表插入和更新多个字段,mysql,insert,Mysql,Insert,当主键ID不匹配时,我尝试将字段插入表中。。。如果存在匹配项,则更新字段,以免覆盖行 我目前的尝试是: INSERT INTO dataouts.all_diagnoses (Study_ID, ol1, ol2, ol3, ol4, ol5, ol6, ol7, ol8, ol9, ol10) SELECT Study_ID, Provisional_Diagnosis_1, Provisional_Diagnosis_2, Provisional_Diagnosis_3,
INSERT INTO dataouts.all_diagnoses (Study_ID, ol1, ol2, ol3, ol4, ol5, ol6, ol7, ol8, ol9, ol10)
SELECT Study_ID, Provisional_Diagnosis_1, Provisional_Diagnosis_2, Provisional_Diagnosis_3,
Provisional_Diagnosis_4, Provisional_Diagnosis_5, Provisional_Diagnosis_6,
Provisional_Diagnosis_7, Provisional_Diagnosis_8, Provisional_Diagnosis_9,
Provisional_Diagnosis_10
FROM SurveyGizmo.SurveyExportAll
ON DUPLICATE KEY UPDATE values (ol1, ol2, ol3, ol4, ol5, ol6, ol7, ol8, ol9, ol10)
SELECT Study_ID, Provisional_Diagnosis_1, Provisional_Diagnosis_2, Provisional_Diagnosis_3,
Provisional_Diagnosis_4, Provisional_Diagnosis_5, Provisional_Diagnosis_6,
Provisional_Diagnosis_7, Provisional_Diagnosis_8, Provisional_Diagnosis_9,
Provisional_Diagnosis_10
FROM SurveyGizmo.SurveyExportAll;
我知道这是不对的,但我想知道是否有人能告诉我如何解决这个问题,因为它已经让我头疼了一段时间了
提前谢谢
再加上一点毅力。。。我认为这是可行的:
insert into dataouts.all_diagnoses(Study_ID, ol1, ol2, ol3, ol4, ol5, ol6, ol7, ol8, ol9, ol10)
select t1.Study_ID, Provisional_Diagnosis_1, Provisional_Diagnosis_2, Provisional_Diagnosis_3,
Provisional_Diagnosis_4, Provisional_Diagnosis_5, Provisional_Diagnosis_6,
Provisional_Diagnosis_7, Provisional_Diagnosis_8, Provisional_Diagnosis_9,
Provisional_Diagnosis_10
from SurveyGizmo.SurveyExportAll t1 left outer join
dataouts.all_diagnoses t2
on t2.Study_ID = t1.Study_ID
on duplicate key update ol1 = t1.Provisional_Diagnosis_1,
ol2 = t1.Provisional_Diagnosis_2,
ol3 = t1.Provisional_Diagnosis_3,
ol4 = t1.Provisional_Diagnosis_4,
ol5 = t1.Provisional_Diagnosis_5,
ol6 = t1.Provisional_Diagnosis_6,
ol7 = t1.Provisional_Diagnosis_7,
ol8 = t1.Provisional_Diagnosis_8,
ol9 = t1.Provisional_Diagnosis_9,
ol10 = t1.Provisional_Diagnosis_10
;
到目前为止似乎有效。。感谢大家的支持。ODKU只处理一行,而不是行集。因此,它不能包含SELECT查询,它必须由许多集合运算符组成,这些运算符将值分配给行的各个列,从而导致重复的冲突。从另一方面来说,您可以用新值替换旧记录的所有字段值,而不是插入。。ODKU可能更安全谢谢Akina。。。我想我的返工现在可以工作了,而不用做很多更新/设置操作符。我不能使用replace,因为我显然不想删除链接到主键的行中已有的任何信息。