基于与表中已有数据的匹配来更新特定字段

时间:2014-01-13 19:10:33

标签: sql

我有一个由以下字段组成的表: Location_ID,User_ID,Last_Name,First_Name,Birthday,SSN

我正在尝试将其与包含相同架构的另一个表合并。但是,需要注意的是,由于应用程序的不同版本,用户可能存在于两个表中,并且具有不同的User_ID。如果我只是简单地合并它们,我会得到重复,其中一个Last_Name,First_Name,Birthday,SSN可能有两个与之关联的User_ID。

我想要做的是将我的新数据集合并到旧数据集中,匹配Last_Name,First_Name,Birthday和SSN,如果没有与之前匹配的条目,则仅添加具有新User_ID的用户四个约束。我不知道这样做的正确方法。有什么建议?

2 个答案:

答案 0 :(得分:0)

我会尝试下面的内容。对于要插入/更新的每个记录,首先检查是否存在具有匹配字段的行(First_Name,Last_Name等..),如果有一行匹配它,则运行更新命令,否则插入。

答案 1 :(得分:0)

以下是使用标准SQL的方法:

insert into t1(User_ID, Last_Name, First_Name, Birthday, SSN)
    select User_ID, Last_Name, First_Name, Birthday, SSN
    from t2
    where not exists (select 1
                      from t1
                      where t1.Last_Name = t2.Last_Name and
                            t1.First_Name = t2.First_Name and
                            t1.Birthday = t2.Birthday and
                            t1.SSN = t2.SSN
                     );

提供SQL后,我怀疑在这种情况下它不会真正起作用。通常,当您遇到这样的问题时,两个表中的内容格式也略有不同。例如,一个可能有第一个名字,另一个可能有一个完整的名字。或者一个人可能在姓氏后面加上一个逗号,另一个没有逗号。