Mysql
 sql >> Datenbank >  >> RDS >> Mysql

GROUP BY mit MAX-Datum

Wenn Sie die Unterabfrage in die WHERE-Klausel einfügen und sie auf n.control_number beschränken, bedeutet dies, dass die Unterabfrage viele Male ausgeführt wird. Dies wird als korrelierte Unterabfrage bezeichnet , und es ist oft ein Leistungskiller.

Es ist besser, die Unterabfrage einmal in der FROM-Klausel auszuführen, um das maximale Datum pro Kontrollnummer zu erhalten.

SELECT n.* 
FROM tblpm n 
INNER JOIN (
  SELECT control_number, MAX(date_updated) AS date_updated
  FROM tblpm GROUP BY control_number
) AS max USING (control_number, date_updated);