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

Utilizzo dell'istruzione Merge per una singola tabella

Usa SELECT... FROM DUAL nel UTILIZZO clausola per generare una singola riga con i tuoi dati:

SQL Fiddle

Impostazione dello schema Oracle 11g R2 :

crea tabella student ( sid int, name varchar(20), major varchar(10), gpa float, tutorid int, PRIMARY KEY (sid));insert in student values(101,'Bill',' CIS',3.45,102);inserire nei valori degli studenti(102,'Mary','CIS',3.1,null);inserire nei valori degli studenti(103,'Sue','Marketing',2.95,102);inserire in valori degli studenti(104,'Tom','Finanace',3.5,106);inserisci nei valori degli studenti(105,'Alex','CIS',2.75,106);inserisci nei valori degli studenti(106,'Sam',' Marketing',3.25,103);inserisci nei valori degli studenti(107,'Joan','Finance',2.9,102); 

Query 1 :

unirsi in student dstusing ( SELECT 123 AS sid, 'Rahul' AS name, 'Temp' AS major FROM DUAL) srcon (src.major=dst.major)quando abbinato quindi aggiorna set name=src.namewhen non corrispondente quindi inserisci (SID, nome, principale) valori ( src.sid, src.name, src.major ) 

Query 2 :

SELEZIONA * DALLO studente 

Risultati :

| SID | NOME | MAGGIORE | GPA | TUTORID ||-----|-------|-----------|--------|---------||| 101 | Bill | CSI | 3.45 | 102 || 102 | Maria | CSI | 3.1 | (nulla) || 103 | Sue | Marketing | 2.95 | 102 || 104 | Tom | Finanza | 3.5 | 106 || 105 | Alessio | CSI | 2.75 | 106 || 106 | Sam | Marketing | 3.25 | 103 || 107 | Giovanna | Finanza | 2.9 | 102 || 123 | Rahul | Temp | (nullo) | (null) |