Я на sql2000 (скоро 2008, да!), Поэтому я пока не могу использовать оператор слияния.
У меня есть вставка, но теперь мне нужно составить оператор обновления.Я хотел бы обернуть это в оператор обновления if else insert.Запрос более длинный и более сложный, но если я смогу получить некоторую помощь по этому основному ниже, я думаю, что смогу получить все целиком.
insert into systemdetail
(systemname, projectname, systemtype)
select distinct T.systemname, T.projectname, S.model
from sysList T, requestSystems S
where T.systemname = S.systemname and
S.systemname not in
(
select d.systemname, d.ProjectName from systemdetail d,syslist t2 where t2.systemname = d.SystemName and t2.projectname=d.ProjectName
)
Записано на английском языке: если имя проекта и имя системы существует втаблица системных деталей, обновите ее.В противном случае вставьте имя проекта и имя системы (и другие поля) в качестве новой записи.
Ниже приведена моя попытка написать if, но я застрял (см. ??? в запросе).
if (exists (select sd.projectname, sd.systemname from systemdetail sd, sysList t where t.projectname = sd.projectname and t.systemname = sd.systemname)
update systemDetail
set projectname = t.projectname,
systemname = t.systemname
where ??? <-- this is where I'm stuck
else
insert into systemdetail
(systemname, projectname, systemtype)
select distinct T.systemname, T.projectname, S.model
from sysList T, requestSystems S
where T.systemname = S.systemname and
S.systemname not in
(
select d.systemname, d.ProjectName from systemdetail d,syslist t2 where t2.systemname = d.SystemName and t2.projectname=d.ProjectName
)