Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:aggiorna le righe con un valore minimo nel gruppo di una colonna da un'altra tabella

La tua istruzione select è più complessa di quanto dovrebbe essere, otterrai lo stesso set in questo modo:

SELECT emp.employee_id,min(bo.booking_date) booking_date
FROM employee emp
  LEFT JOIN booking bo 
  ON bo.employee_id = emp.employee_id
WHERE emp.joining_date is NULL
GROUP BY emp.employee_id;

Il tuo aggiornamento può essere eseguito in questo modo, tieni presente che la sezione "ed esiste" è facoltativa, ma tendo a includerla per rendere più chiaro l'intento della query.

UPDATE employee emp
  SET emp.joining_date = 
    (SELECT min(booking_date) from booking bo where bo.employee_id = emp.employee_id)
WHERE emp.joining_date IS NULL
  and exists(select * from booking bo where bo.employee_id = emp.employee_id);