sql >> Databáze >  >> RDS >> Oracle

Prohlášení Oracle Update s Inner Join

V Oracle nemůžete použít from klauzule v aktualizaci prohlášení tím způsobem. Cokoli z následujícího by mělo fungovat.

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;

Dávám však přednost použití MERGE v tomto scénáři:

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. Migrace Laravel nemůže vytvořit cizí klíč

  2. Vložit do... Sloučit... Vybrat (SQL Server)

  3. Tlačítko Přidat PHP pro zobrazení veškerého obsahu celého záznamu MySQL

  4. Oprava „INSERT má více výrazů než cílových sloupců“ v PostgreSQL