我需要一个查询来向表中添加数据记录。我想提前检查是否已经存在要插入表中的记录。这是我的代码(它有效):
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'
我相信我的代码不是很有效。也许有一个更好的陈述,以达到相同的结果?
答案 0 :(得分:0)
首先,你不需要在这里进行分组
if not exists(select * from table1 where field1='value1' and field2='value2')
insert into table1 values('value1', 'value2')
其次,您可以为这两列添加唯一索引,而SQL将代替您执行该任务:
CREATE UNIQUE NONCLUSTERED INDEX [IX_table1] ON [dbo].[table1]
(
[field1] ASC,
[field2] ASC
)
在这两种情况下,我都建议在这两列上添加索引。
答案 1 :(得分: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