MS SQL Server 2012 - вставьте значения, если строка не существует - PullRequest
2 голосов
/ 24 апреля 2020

Я новичок в 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

Если бы кто-то мог помочь мне вставить их там, где значения строк не существуют, я был бы очень признателен

1 Ответ

2 голосов
/ 24 апреля 2020

Вы можете использовать синтаксис 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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...