2014-10-01 3 views
0

У меня есть таблица TableKats который выглядит следующим образом:SQL Server: обновление одного столбца и вставки, если не существует

ID - int 
Name - varchar 
KatID - int 

То, что я хочу сделать, это обновить столбец Name из другой таблицы, и если есть имя в другой таблице, которое не существует в TableKats, оно должно вставить его и дать KatID a 0

Кто-нибудь знает способ сделать это? Благодаря

+0

дубликата http://stackoverflow.com/questions/5288283/sql -server-insert-if-not-exist-best-practice – Steve

+0

Итак, чтобы мы обновили имя, нам нужно знать, что имя в «TableKats» отличается от имени на другой таблице, так? знаем ли мы, нужно ли обновлять его или вставлять? – Lamak

+0

Да, это часть проблемы :) – user3661240

ответ

2

вы можете сделать это с помощью MERGE, как и ваша другая схема таблицы не известно, предполагая имя в качестве столбца в другой таблице слишком

MERGE TableKats T 
USING (SELECT * from TableB) AS S 
ON T.Name = S.Name 
WHEN NOT MATCHED THEN 
    INSERT (Name, KatID) 
    VALUES (S.Name, 0) 
WHEN MATCHED THEN 
    UDPATE -- Not clear what needs to be updated. 
+0

Он должен просто обновить поле, если оно существует, но это не имеет значения :) Я также нуждаюсь в нем для удаления строк в KatTable, если имя не существует в другой таблице – user3661240

+0

@ user3661240, вы можете удалить также с помощью merge – radar

+0

oh okay, но спасибо в любом случае – user3661240

Смежные вопросы