Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на оператор Merge за единична таблица

Използвайте SELECT ... FROM DUAL в USING клауза за генериране на един ред с вашите данни:

SQL Fiddle

Настройка на схема на Oracle 11g R2 :

създайте таблица student ( sid int, name varchar(20), major varchar(10), gpa float, tutorid int, PRIMARY KEY (sid));вмъкнете в student values(101,'Bill',' CIS',3.45,102);вмъкване в студентски стойности(102,'Mary','CIS',3.1,null);вмъкване в студентски стойности(103,'Sue','Маркетинг',2.95,102);вмъкване в студентски стойности (104,'Tom','Finanace',3.5,106);вмъкване в студентски стойности(105,'Alex','CIS',2.75,106);вмъкване в студентски стойности(106,'Сам',' Маркетинг',3.25,103);вмъкване в стойностите на студента(107,'Джоан','Финанси',2.9,102); 

Заявка 1 :

сливане в student dstusing ( ИЗБЕРЕТЕ 123 AS sid, 'Rahul' AS name, 'Temp' AS major FROM DUAL) srcon (src.major=dst.major)когато съвпадне, тогава актуализирайте set name=src.namewhen не съответства, тогава вмъкнете (SID, име, основен) стойности ( src.sid, src.name, src.major ) 

Заявка 2 :

ИЗБЕРЕТЕ * ОТ студент 

Резултати :

<предварителен код>| SID | ИМЕ | ОСНОВЕН | GPA | TUTORID ||-----|-------|-----------|--------|---------|| 101 | Бил | ОНД | 3.45 | 102 || 102 | Мери | ОНД | 3.1 | (нула) || 103 | Сю | Маркетинг | 2,95 | 102 || 104 | Том | Финанси | 3.5 | 106 || 105 | Алекс | ОНД | 2,75 | 106 || 106 | Сам | Маркетинг | 3.25 | 103 || 107 | Джоан | Финанси | 2.9 | 102 || 123 | Рахул | Темп | (нула) | (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. Табличен израз на Oracle за събиране и ред

  2. Вземете най-добри резултати за всяка група (в Oracle)

  3. Вземете плик, т.е. припокриващи се времеви интервали

  4. Грешки при инсталиране на jdk 1.7 в linux

  5. Oracle поддържа ли пълнотекстово търсене?