2013-03-20 39 views
0

我目前有一个表有几千个条目。我找到了一种方法来为系统中的所有条目插入一行新的数据(参见下面的示例),但不幸的是,我发现其中一些条目已经存在。我试图找出如何有选择地运行INSERT INTO函数的基础上,如果行已经存在或没有。根据行是否已经存在或有没有选择性地插入行

Column 1 Column 2 Column 3 
10   Address True 
10   City  False 
10   State  True 
20   Address True 
20   City  True 
20   State  True 
20   NEW  NEW* 

Column 1 Column 2 Column 3 
10   Address True 
10   City  False 
10   State  True 
10   NEW  NEW 
20   Address True 
20   City  True 
20   State  True 
20   NEW  NEW 

我已经用于插入的代码是:

insert into table-name(Column1, Column2, Column3) 
    select 
    Column1, 'NEW', 'NEW*' 
    from 
    table-name 
    group by 
    Column1 

我假设我需要使用IF/ELSE声明,但我运行到上IF声明的问题。目前,我用下面的代码:

IF Column 2 like 'New' leave NULL 
ELSE 
    insert into table-name(Column1, Column2, Column3) 
    select 
     Column1, 'NEW', 'NEW*' 
    from table-name 
    group by Column1 

我知道IF语句是错误的,但试图找出该怎么离开现有行什么样的价值观,如果他们已经填充相同。

+0

仔细检查问题的格式。目前很难解析。 NM ..我看到它现在已经修复。 – 2013-03-20 15:01:39

回答

0

使用SQL Server,你可以做一个NOT EXISTS

insert into table-name(Column1, Column2, Column3) 
    select 
    Column1, 'NEW', 'NEW*' 
    from 
    table-name 
    WHERE NOT EXISTS (SELECT 1 FROM table-name xref WHERE xref.Column1 = table-name.Column1 AND xref.Column2 = 'NEW') 
    group by 
    Column1 
0

对于SQL Server使用CTE来定义你的数据集插入:

WITH NonDupes (<your fieldlist>) 
AS 
(SELECT <your fieldlist> FROM <your tables> WHERE <tablea>.<column> NOT IN (SELECT <column> FROM <tableb>)) 
INSERT INTO 
<tableb> 
VALUES(SELECT * FROM NonDupes) 
相关问题