两个表之间的条件SQL插入

两个表之间的条件SQL插入,sql,sql-server-2008,insert,conditional,Sql,Sql Server 2008,Insert,Conditional,我在表1中已经有了一些nvarchar结果 nvarchar name name1 name3 name4 我有表2,其中有格式的记录 nvarchar name | nvarchar subname name1 | subname1 name1 | subname2 name1 | subname3 name1 | subname4 name2 | subname1 name2 | subname

我在表1中已经有了一些nvarchar结果

nvarchar name
name1
name3
name4
我有表2,其中有格式的记录

nvarchar name | nvarchar subname
name1         | subname1
name1         | subname2
name1         | subname3
name1         | subname4
name2         | subname1
name2         | subname2
name3         | subname3
我需要检查表2中的所有记录并按名称对它们进行分组,然后将所有名称记录插入表1,但条件是它们在表1中不存在

你能帮个忙吗?我宁愿删除表1并从表2中重新创建它,但表1中有一些记录不在表2中,它们必须保留在那里


谢谢。

这将把表2中尚未包含在表1中的所有名称插入到表1中:

INSERT INTO table1 
(
    name
)
SELECT t2.name
FROM   table2 t2
WHERE NOT EXISTS
(
    SELECT 1
    FROM   table1 t1
    WHERE  t1.name = t2.name 
)

这将把表2中的所有名称插入表1中尚未存在的名称:

INSERT INTO table1 
(
    name
)
SELECT t2.name
FROM   table2 t2
WHERE NOT EXISTS
(
    SELECT 1
    FROM   table1 t1
    WHERE  t1.name = t2.name 
)

为什么您希望删除表1?这样做有什么好处?我不会删除它,我不能因为表2有不同的记录,它们需要保留在那里。所以只需要用表2中丢失的记录更新表1。为什么要删除表1?这样做有什么好处?我不会删除它,我不能因为表2有不同的记录,它们需要保留在那里。所以只需要用表2中丢失的记录更新表1。