Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Aktualizuj za pomocą zapytania Join w Oracle

Chyba że Twój SELECT podzapytanie zwraca pojedynczy wiersz, twoja UPDATE instrukcja powinna zakończyć się błędem

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

Ogólnie rzecz biorąc, serwatka masz skorelowaną aktualizację, potrzebujesz pewnego warunku, który wiąże wiersze w zewnętrznej tabeli T1 do wierszy w wewnętrznym podzapytaniu, aby upewnić się, że podzapytanie zwróci pojedynczy wiersz. To ogólnie wyglądałoby mniej więcej tak

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);

Wreszcie ta UPDATE instrukcja aktualizuje każdy wiersz w T1 . Czy to jest to, co zamierzasz? A może chcesz zaktualizować tylko te wiersze, w których na przykład znajdziesz dopasowanie w podzapytaniu?



  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.DataAccess.Client.OracleException ORA-03135:utrata połączenia

  2. Zaktualizuj instrukcję z wewnętrznym sprzężeniem w Oracle

  3. Bieżąca suma według grupowego SQL (Oracle)

  4. Instrukcja UPDATE w Oracle przy użyciu SQL lub PL/SQL do aktualizacji TYLKO pierwszego zduplikowanego wiersza

  5. Wskazówka Oracle WITH i MATERIALIZE działa jako autonomiczna transakcja dla funkcji