Podle Referenční příručka MySQL 5.7 ,
V klauzuli WHERE byste neměli používat alias, protože alias je generován při spuštění dotazu a nemusí být připraven, když se podmínka WHERE spustí. Dostanete alias je neznámá chyba sloupce, protože MySQL nezná alias, dokud není vygenerován jako výsledek dotazu. Proto zde nemůžete použít alias v klauzuli WHERE.
(Doplněk po úpravě otázky)
Požadovaný výsledek můžete získat následujícím dotazem:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Vysvětlení dotazu:V SELECT
klauzule zmiňujete pouze sloupce, které chcete zobrazit, MAX()
funkce již sama vybere maximální hodnoty (nepotřebujete tedy klauzuli WHERE) a klauzule GROUP BY říká výsledku, aby seskupil všechny výsledky na základě id
a poté url
.