Според Справочното ръководство за 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
.