Volgens MySQL 5.7 Reference Manual ,
U moet geen alias gebruiken in de WHERE-clausule, aangezien de alias wordt gegenereerd bij het uitvoeren van de query en mogelijk niet gereed is wanneer de WHERE-voorwaarde wordt uitgevoerd. U krijgt een alias is een onbekende kolomfout omdat MySQL pas op de hoogte is van de alias nadat deze is gegenereerd als resultaat van de query. Daarom kunt u hier geen alias gebruiken in de WHERE-clausule.
(Toevoeging na bewerking van vraag)
U kunt het gewenste resultaat krijgen met de volgende vraag:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Uitleg zoekopdracht:In SELECT
clausule vermeldt u alleen de kolommen die u wilt weergeven, de MAX()
functie zal de maximale waarden zelf al selecteren (u hebt dus geen WHERE-component nodig), en de GROUP BY-component vertelt het resultaat om alle resultaten te groeperen op basis van id
en dan url
.