Gemäß MySQL 5.7 Reference Manual ,
Sie sollten keinen Alias in der WHERE-Klausel verwenden, da der Alias beim Ausführen der Abfrage generiert wird und möglicherweise nicht bereit ist, wenn die WHERE-Bedingung ausgeführt wird. Sie erhalten den Spaltenfehler „alias is unknown“, da MySQL den Alias erst kennt, nachdem er als Ergebnis der Abfrage generiert wurde. Daher können Sie hier keinen Alias in der WHERE-Klausel verwenden.
(Ergänzung nach Bearbeitung der Frage)
Sie können das gewünschte Ergebnis mit der folgenden Abfrage erhalten:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Abfrageerklärung:In SELECT
-Klausel erwähnen Sie nur die Spalten, die Sie anzeigen möchten, den MAX()
Die Funktion wählt bereits die Maximalwerte selbst aus (Sie benötigen also keine WHERE-Klausel), und die GROUP BY-Klausel weist das Ergebnis an, alle Ergebnisse basierend auf id
zu gruppieren und dann url
.