sql >> Databáze >  >> RDS >> Oracle

Převeďte dotaz Oracle SQL na dotaz Azure SQL

Toto Oracle merge dotaz má pouze WHEN NOT MATCHED klauzule a žádné WHEN MATCHED , takže v podstatě je to insert a 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)

To je logicky ekvivalentní původnímu dotazu Oracle.

Pokud jde o vaši původní otázku:SQL Server podporuje svou vlastní variantu nebo merge prohlášení , jehož syntaxe je odlišná od Oracle. Přepsali byste Oracle merge jako:

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)



  1. MySQL – NEJSOU pro primární klíče potřeba omezení NULL?

  2. PostgreSQL:Jak uniknout '?

  3. Mapování hibernace Many-to-Many a skript mysql - problém s perzistencí

  4. SELECT z tabulky se seznamem Varying IN v klauzuli WHERE