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

Инструкция за актуализиране на Oracle с вътрешно присъединяване

В Oracle не можете да използвате from клауза в актуализация изявление по този начин. Всяко от следните трябва да работи.

UPDATE d
SET    d.user_id   =
          (SELECT c.user_id
           FROM   c
           WHERE  d.mgr_cd = c.mgr_cd)
WHERE  d.user_id IS NULL;

UPDATE (SELECT d.user_id AS d_user_id, c.user_id AS c_user_id
        FROM   d INNER JOIN c ON d.mgr_cd = c.mgr_cd
        WHERE  d.user_id IS NULL)
SET    d_user_id   = c_user_id;

UPDATE (SELECT d.user_id AS d_user_id, c.user_id AS c_user_id
        FROM   d INNER JOIN c ON d.mgr_cd = c.mgr_cd)
SET    d_user_id   = c_user_id
WHERE  d_user_id IS NULL;

Предпочитам обаче да използвам MERGE в този сценарий:

MERGE INTO d
USING      c
ON         (d.mgr_cd = c.mgr_cd)
WHEN MATCHED THEN
    UPDATE SET d.user_id = c.user_id
        WHERE      d.user_id IS 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. Разделете голям текстов/CSV файл на множество файлове в PL SQL

  2. Как да добавя клъстер към съставен ключ?

  3. Преобразуване на обект в CLOB

  4. Има ли официална препоръка на Oracle за използването на явни ANSI JOIN срещу неявни присъединявания?

  5. Получаване на грешка при създаване на изглед в Oracle DB