Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle - Aktualisieren Sie Zeilen mit einem Mindestwert in der Gruppe einer Spalte aus einer anderen Tabelle

Ihre select-Anweisung ist komplexer als sie sein muss, Sie erhalten dieselbe Menge auf diese Weise:

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;

Ihre Aktualisierung kann so erfolgen, beachten Sie, dass der Abschnitt "und existiert" optional ist, aber ich neige dazu, ihn einzuschließen, um die Absicht der Abfrage klarer zu machen.

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