朋友, 我正在寻找一个有两个表(Tab1和Tab2)的解决方案。两者具有相同的字段(F1,F2,F3,F4)。如果我串联F2,F3,F4,则会得到唯一记录。 Tab1(源)有10条记录,Tab2(目的地)有2条记录。 我想在“源”选项卡中创建一个唯一的ID,并在“目标”选项卡中执行相同的操作,然后检查“目标”选项卡中不可用的记录并将其添加。 因此,如果Tab2没有这些记录,则记录将从Tab1移到Tab2。 让我知道我该怎么做。
关于, 维克
答案 0 :(得分:1)
如果我理解正确,则没有理由将这些字段串联起来。您可以在where
条件(或join
条件)中使用它们。
以下是使用not exists
的一种选择:
insert into tab2 (f1,f2,f3,f4)
select f1,f2,f3,f4
from tab1 t1
where not exists (
select 1
from tab2 t2
where t1.f2 = t2.f2 and t1.f3 = t2.f3 and t1.f4 = t2.f4
)
这将根据tab1
将tab2
中tab2
中不存在的任何数据插入f2, f3, and f4
答案 1 :(得分:0)
使用左联接,从table1中获取所有table2中没有匹配行的行:
insert into table2 (f1, f2, f3, f4)
select t1.f1, t1.f2, t1.f3, t1.f4
from table1 t1
left join table2 t2
on t1.f2 = t2.f2 and t1.f3 = t2.f3 and t1.f4 = t2.f4
where t2.f2 is null and t2.f3 is null and t2.f4 is null