27,579
社区成员
发帖
与我相关
我的任务
分享
MERGE INTO 表A 已有 USING
(SELECT '1NHXjRVkXVz2geAr12in8AAxK69caE9L41' d
UNION ALL SELECT '1JB4SXTfWPDyw4o1abudfurcPsQ4thJJFg' d
UNION ALL SELECT '1KveoNM2cVPkTpbMeYKGUheenwCcFcyvJc' d
UNION ALL SELECT '19B1tyo63GfVZEp85Kq18vgpYbzNKQE72X' d)
新增 ON(已有.地址=新增.d) WHEN NOT MATCHED THEN INSERT(地址) VALUES(新增.d);
需要再加入一个逻辑:假设收到客户端提交过来100条数据,完成排重后有20条数据准备要新增到表A中去。现在将这20条记录再与表B做一下对比,如果记录存在于B中,给它们标记个记号,日后使用。
insert into A表(地址,识别)
select 地址=t.d,
识别=case when exists(select 1 from B表 b where b.地址=t.d) then 1
else 0 end
from (select d='1NHXjRVkXVz2geAr12in8AAxK69caE9L41' union all
select d='1JB4SXTfWPDyw4o1abudfurcPsQ4thJJFg' union all
select d='1KveoNM2cVPkTpbMeYKGUheenwCcFcyvJc' union all
select d='19B1tyo63GfVZEp85Kq18vgpYbzNKQE72X') t
left join A表 a on t.d=a.地址
where a.地址 is null
MERGE INTO 表A 已有 USING
(SELECT temp1.d,b.记号* FROM (SELECT '1NHXjRVkXVz2geAr12in8AAxK69caE9L41' d
UNION ALL SELECT '1JB4SXTfWPDyw4o1abudfurcPsQ4thJJFg' d
UNION ALL SELECT '1KveoNM2cVPkTpbMeYKGUheenwCcFcyvJc' d
UNION ALL SELECT '19B1tyo63GfVZEp85Kq18vgpYbzNKQE72X' d) temp1 LEFT JOIN b ON temp1.col = b.col)
新增 ON(已有.地址=新增.d) WHEN NOT MATCHED THEN INSERT(地址,记号) VALUES(新增.d,新增.记号);