0

我需要一个查询来将数据记录添加到表中。我想提前检查要插入到表中的记录是否已经存在。这是我的代码(有效):

INSERT INTO table1(field1, field2) 
    SELECT 'value1', 'value2' 
    FROM   table1 
    WHERE  NOT EXISTS (SELECT * 
                       FROM   table1 
                       WHERE  field1 = 'value1' 
                          AND field2 = 'value2') 
    GROUP  BY 'value1', 'value2' 

我相信我的代码不是很有效。为了达到相同的结果,也许有更好的说法?

4

2 回答 2

0
;with src as
(
    select distinct
        field1 = 'value1',
        field2 = 'value2'
    from table1
)
insert into Table1(Field1,Field1)
select s.Field1, s.Field2
from src s
left outer join table1 d --dest
    on s.Field1 = d.Field1
        and s.Field2 = d.Field2
where d.Field1 is null
于 2015-02-02T16:15:24.397 回答
0

首先你根本不需要在这里分组

if not exists(select * from table1 where field1='value1' and field2='value2')
insert into table1 values('value1', 'value2')

其次,您可以为这 2 列添加唯一索引,SQL 将代替您完成这项工作:

CREATE UNIQUE NONCLUSTERED INDEX [IX_table1] ON [dbo].[table1]
(
    [field1] ASC,
    [field2] ASC
)

在这两种情况下,我都建议在这 2 列上添加索引。

于 2015-02-02T16:06:23.793 回答