Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggunakan pernyataan Gabung untuk tabel tunggal

Gunakan SELECT ... FROM DUAL di USING klausa untuk menghasilkan satu baris dengan data Anda:

SQL Fiddle

Pengaturan Skema Oracle 11g R2 :

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);

Kueri 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 )

Kueri 2 :

SELECT * FROM student

Hasil :

| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan Oracle lambat (atau gagal) dari aplikasi .NET tetapi cepat dari Pengembang SQL

  2. Alternatif SQL standar untuk Oracle DECODE

  3. SQL*Plus tidak menjalankan skrip SQL yang dilakukan oleh Pengembang SQL

  4. Bagaimana cara memeriksa statistik basi

  5. Bagaimana menghindari substitusi variabel di Oracle SQL Developer dengan 'trinidad &tobago'