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

Актуализирайте със заявка за присъединяване в Oracle

Освен ако вашият SELECT подзаявката връща един ред, вашата UPDATE изявлението трябва да се провали с грешката

ORA-01427: single-row subquery returns more than one row

Като цяло, ако имате корелирана актуализация, имате нужда от някакво условие, което да свързва редове във външната таблица T1 към редове във вътрешната подзаявка, за да се гарантира, че подзаявката връща един ред. Това обикновено изглежда нещо като

UPDATE table1 t1 SET (t1.col,t1.Output) = (
  SELECT t2.col, t3.Output + t2.col
  FROM tabl2 t3 
  LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
  WHERE t2.col is not NULL
    AND t1.some_key = t2.some_key);

И накрая, това UPDATE оператор актуализира всеки ред в T1 . Това ли възнамерявате? Или искате да актуализирате само редовете, където например намирате съвпадение във вашата подзаявка?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-полезните заявки на AWR за надстройка на R12.2/R12.1

  2. ORA-01843 не е валиден месец- Сравняване на дати

  3. Основни технологични промени в E-Business Suite 12.2

  4. Препращане към типовете, дефинирани от потребителя на Oracle, през DBLINK?

  5. REGEXP_SUBSTR() Функция в Oracle