sql >> Base de Datos >  >> RDS >> Oracle

Oracle:actualice las filas con un valor mínimo en el grupo de una columna de otra tabla

Su declaración de selección es más compleja de lo que debe ser, obtendrá el mismo conjunto de esta manera:

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;

Su actualización se puede hacer de esta manera, tenga en cuenta que la sección "y existe" es opcional, pero tiendo a incluirla para que la intención de la consulta sea más 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);