表A
-----------------------------------------------
FlowNo CardNo ShopNo DateIn
表B
-----------------------------------------------
FlowNo CardNo ShopNo DateIn
表A 与 表B 的结构完全一致!
需要实现的:1.把 表A 中符合某一条件的记录 insert 到 表B 中,
2.如果 表B中已经存在 表B.FlowNo = 表A.FlowNo 的记录, 则先删除表B中这些已经存的记录, 即保证 FlowNo的唯一性!!!
3.要求语句尽可能地精简且效率高,最好一个完整的语句就搞定
-----------------------------------------------
FlowNo CardNo ShopNo DateIn
表B
-----------------------------------------------
FlowNo CardNo ShopNo DateIn
表A 与 表B 的结构完全一致!
需要实现的:1.把 表A 中符合某一条件的记录 insert 到 表B 中,
2.如果 表B中已经存在 表B.FlowNo = 表A.FlowNo 的记录, 则先删除表B中这些已经存的记录, 即保证 FlowNo的唯一性!!!
3.要求语句尽可能地精简且效率高,最好一个完整的语句就搞定
----更新同名记录
UPDATE b set CardNo = a.CardNo,ShopNo = a.ShopNo,DateIn = a.DateIn
FROM B b inner join A a on b.FlowNo = a.FlowNo
----插入不存在的记录
INSERT into B
SELECT * from A where not exists(select 1 from B where FlowNo = A.FlowNo)
select tableA.* from tableA left join tableB on tableA.FlowNo = tableB.FlowNo where tableB.FlowNo is null
select tableA.* from tableA left join tableB on tableA.FlowNo = tableB.FlowNo where tableB.FlowNo is null
用 UPDATE 不好使,表A中还有其它的好多的列呢,还是先删除再 insert 更方便to db_sky() :
insert into tableB
select tableA.* from tableA left join tableB on tableA.FlowNo = tableB.FlowNo where tableB.FlowNo is null
用不着这么复杂吧