Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sử dụng câu lệnh Merge cho một bảng

Sử dụng SELECT ... FROM DUAL trong USING mệnh đề để tạo một hàng duy nhất với dữ liệu của bạn:

SQL Fiddle

Thiết lập lược đồ 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);

Truy vấn 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 )

Truy vấn 2 :

SELECT * FROM student

Kết quả :

| 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. Sau khi thả phân vùng, chỉ mục trở nên không sử dụng được, tôi phải làm gì,

  2. Tự động thực thi kích thước bảng cơ sở dữ liệu tối đa bằng cách loại bỏ các hàng cũ

  3. Oracle SQL Connect By Logic

  4. Làm thế nào để chọn các giá trị duy nhất từ ​​một bảng?

  5. PHP, Oracle và ODBC:Làm thế nào để kiểm tra xem tập kết quả có trống không?