Mysql
 sql >> Base de données >  >> RDS >> Mysql

GROUP BY ayant une date MAX

Placer la sous-requête dans la clause WHERE et la restreindre à n.control_number signifie qu'elle exécute la sous-requête plusieurs fois. C'est ce qu'on appelle une sous-requête corrélée , et c'est souvent un tueur de performances.

Il est préférable d'exécuter la sous-requête une fois, dans la clause FROM, pour obtenir la date maximale par numéro de contrôle.

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