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

Brug af Merge-sætning til enkelt tabel

Brug SELECT ... FROM DUAL i USING klausul for at generere en enkelt række med dine data:

SQL Fiddle

Oracle 11g R2 Schema Setup :

create table student (
  sid int,
  name varchar(20),
  major varchar(10),
  gpa float,
  tutorid int,
  PRIMARY KEY (sid)
);

insert into student values(101,'Bill','CIS',3.45,102);
insert into student values(102,'Mary','CIS',3.1,null);
insert into student values(103,'Sue','Marketing',2.95,102);
insert into student values(104,'Tom','Finanace',3.5,106);
insert into student values(105,'Alex','CIS',2.75,106);
insert into student values(106,'Sam','Marketing',3.25,103);
insert into student values(107,'Joan','Finance',2.9,102);
 

Forespørgsel 1 :

merge into student dst
using (
  SELECT 123 AS sid,
         'Rahul' AS name,
         'Temp' AS major
  FROM   DUAL
) src
on (src.major=dst.major)
when matched then
  update set name=src.name
when not matched then
  insert(SID,name,major) values ( src.sid, src.name, src.major )
 

Forespørgsel 2 :

SELECT * FROM student
 

Resultater :

| SID | NAME | MAJOR | GPA | TUTORID | |-----|-------|-----------|--------|---------| | 101 | Bill | CIS | 3.45 | 102 | | 102 | Mary | CIS | 3.1 | (null) | | 103 | Sue | Marketing | 2.95 | 102 | | 104 | Tom | Finanace | 3.5 | 106 | | 105 | Alex | CIS | 2.75 | 106 | | 106 | Sam | Marketing | 3.25 | 103 | | 107 | Joan | Finance | 2.9 | 102 | | 123 | Rahul | Temp | (null) | (null) |


  1. Hvordan ATAN2() virker i MariaDB

  2. postgres kolonne alias problem

  3. opdater og indsæt forespørgsler og skaber et dødvande

  4. Find afhængige objekter til en tabel eller visning