MS SQL Server 2012 - 如果行不存在,请插入值。

问题描述 投票:0回答:1

我是SQL新手,我需要在插入某行的值之前检查它们是否存在。

我试图同时向几条记录插入详细信息。

我的代码如下。

insert into [Test].[Projects]([TestID], [GroupID], [TestingID], [Grade])
values 
    (314, 9, 77, 2)
    ,(314, 9, 77, 3)
    ,(314, 9, 77, 4)
    ,(329, 2, 65, 2)
    ,(329, 2, 65, 3)
    ,(329, 2, 65, 4)
go

如果有人能帮我在行值不存在的情况下插入这些值,我将非常感激。

sql insert row not-exists
1个回答
2
投票

你可以使用 insert ... select 句法,带 not exists 条件,确保表中不存在相同的记录。

insert into Test.Projects(TestID, GroupID, TestingID, Grade)
select v.*
from (values 
    (314, 9, 77, 2), 
    (314, 9, 77, 3), 
    (314, 9, 77, 4), 
    (329, 2, 65, 2), 
    (329, 2, 65, 3), 
    (329, 2, 65, 4)
) v(TestID, GroupID, TestingID, Grade)
where not exists (
    select 1 
    from Test.Projects p
    where 
        p.TestID = v.TestID 
        and p.GroupID = v.GroupID 
        and p.TestingID = v.TestingID
        and p.Grade = v.Grade
)
© www.soinside.com 2019 - 2024. All rights reserved.