Oracle merge
này truy vấn chỉ có WHEN NOT MATCHED
và không có mệnh đề WHEN MATCHED
, về cơ bản đó là insert
và 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)
Điều này về mặt logic tương đương với truy vấn Oracle ban đầu.
Đối với câu hỏi ban đầu của bạn:SQL Server có hỗ trợ hương vị riêng của nó hoặc merge
tuyên bố
, có cú pháp khác với Oracle. Bạn sẽ viết lại merge
của Oracle như:
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)