この Oracle merge
クエリには WHEN NOT MATCHED
しかありません 句と WHEN MATCHED
なし 、基本的には insert
です not exists
:
insert into studies(study_id, study_date) select x.* from (values(@study_id, @study_date)) as x(study_id, study_date) where not exists (select 1 from studies s1 where s1.study_id = x.study_id)
プレ>これは、元の Oracle クエリと論理的に同等です。
元の質問について:SQL Server は独自のフレーバーまたは
merge
声明 、その構文は Oracle とは異なります。 Oraclemerge
を書き直します として:merge studies as s using (values(@study_id, @study_date)) as x(study_id, study_date) on (s.study_id = x.study_id) when not matched then insert (study_id, study_date) values(x.study_id, x.study_date)
プレ>