私はmerge文をまだ使用することができないので、私はsql2000(2008年が近づいています!存在する場合insert else update
私は挿入ステートメントを持っていますが、今は更新ステートメントを作成する必要があります。私はif exists insert else文でこれをラップしたいと思います。クエリはより長く、より複雑ですが、私はこの基本的なものを使っていくつかの助けを得ることができます、私はすべてを得ることができると思います。 プロジェクト名およびSYSTEMNAMEはそれを更新し、systemdetailテーブルに存在する場合:英語で書き出さ
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
)
あなたはその更新をしている?あなたが最初にチェック同じ値を更新するのはなぜ他のテーブルの上に等しかったので、あなたは何 – Lamak
を更新する必要はありません@Lamak systemDetailはマスタテーブルであり、requestSystemsはセカンダリテーブルであり、ユーザーが何かをシステムに要求します。作業要求が承認されると、requestSystemで提供された詳細がsystemDetailテーブルに「移動」されます。複数のプロジェクト名で同じシステムが存在する可能性があります。 – HPWD
@Lamak @jzworkmanに同意しますか?すでに 'systemname'と' projectname'に一致する行がある場合は 'systemtype'を更新しようとしていますか? – diaho