Според Справочното ръководство за MySQL 5.7 ,
Не трябва да използвате псевдоним в клаузата WHERE, тъй като псевдонимът се генерира при изпълнение на заявката и може да не е готов, когато условието WHERE се изпълни. Получавате грешка в колоната с псевдоним е неизвестен, тъй като MySQL не знае за псевдонима, докато не бъде генериран в резултат на заявката. Следователно не можете да използвате псевдоним в клаузата WHERE тук.
(Добавяне след редакция на въпроса)
Можете да получите желания резултат със следната заявка:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Обяснение на заявката:В SELECT клауза споменавате само колоните, които искате да покажете, MAX() функцията вече сама ще избере максималните стойности (така че не се нуждаете от клауза WHERE), а клаузата GROUP BY казва на резултата да групира всички резултати въз основа на id и след това url .