串联以创建唯一ID并签入另一个表

时间:2018-12-13 20:24:01

标签: sql ms-access

朋友, 我正在寻找一个有两个表(Tab1和Tab2)的解决方案。两者具有相同的字段(F1,F2,F3,F4)。如果我串联F2,F3,F4,则会得到唯一记录。 Tab1(源)有10条记录,Tab2(目的地)有2条记录。 我想在“源”选项卡中创建一个唯一的ID,并在“目标”选项卡中执行相同的操作,然后检查“目标”选项卡中不可用的记录并将其添加。 因此,如果Tab2没有这些记录,则记录将从Tab1移到Tab2。 让我知道我该怎么做。

关于, 维克

2 个答案:

答案 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
    )

这将根据tab1tab2tab2中不存在的任何数据插入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