यह 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 सर्वर अपने स्वयं के स्वाद का समर्थन करता है या merge
कथन
, जिसका सिंटैक्स Oracle से अलग है। आप Oracle merge
. को फिर से लिखेंगे के रूप में:
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)