两个表之间的条件SQL插入

时间:2011-02-06 12:36:06

标签: sql sql-server-2008 insert conditional

我有table1,我已经有了一些nvarchar结果。

nvarchar name
name1
name3
name4

我有table2,我有格式记录

nvarchar name | nvarchar subname
name1         | subname1
name1         | subname2
name1         | subname3
name1         | subname4
name2         | subname1
name2         | subname2
name3         | subname3

我需要遍历table2中的所有记录并按名称对它们进行分组,然后将所有名称记录插入到table1中,但条件是它们在table1中不存在。

你能帮忙吗?我宁愿删除table1并从table2重新创建它,但table1有一些不在table2中的记录,他们必须留在那里。

谢谢。

1 个答案:

答案 0 :(得分:4)

这会将table2中的所有名称插入table1中尚未包含在table1中的名称:

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