请没有 MySQL 的答案!
基本查询如下(假设A为Key)
INSERT INTO destination (A,B,C)
SELECT a1,b1,c1
FROM source
WHERE (selectconditions) ;
源包含许多可能已经或可能不在目标中的记录,这意味着一旦遇到重复记录,插入就会失败。
期望的行为:插入或忽略
这是给定问题的理想方案。如果可以插入,否则继续。
伪c#/java:
foreach(record in selectQuery)
{
try { destination.insert(record) }
catch(insertionException){//squelch}
}
这可以通过添加在 SQL 中处理
AND NOT EXISTS (SELECT A FROM destination INNER JOIN source on destination.A = source.a1)
到查询的末尾——换句话说,在插入之前检查。
处理这种常见情况还有哪些其他选择?这些技术的优缺点是什么?