sql >> Database teknologi >  >> RDS >> Oracle

Konverter Oracle SQL-forespørgsel til Azure SQL-forespørgsel

Denne Oracle merge forespørgslen har kun en WHEN NOT MATCHED klausul og ingen WHEN MATCHED , så grundlæggende er det insert og 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)

Dette svarer logisk til den originale Oracle-forespørgsel.

Med hensyn til dit oprindelige spørgsmål:SQL Server understøtter sin egen smag eller merge erklæring , hvis syntaks er anderledes end Oracle. Du ville omskrive Oracles merge som:

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. Opdater tabel fra en anden tabel i Oracle

  2. Sådan får du den første post ud af hver gruppe fra resultatet hentet ved at bruge gruppe for kommando

  3. Kunne ikke indlæse JDBC-driverklassen [com.mysql.jdbc.Driver]

  4. Få RÆKKER som KOLONNER (SQL Server dynamisk PIVOT-forespørgsel)