Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle - Atualizar linhas com um valor mínimo no grupo de uma coluna de outra tabela


Sua instrução select é mais complexa do que precisa ser, você obterá o mesmo conjunto desta maneira:
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;

Sua atualização pode ser feita assim, observe que a seção "e existe" é opcional, mas costumo incluí-la para tornar a intenção da consulta mais clara.
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);