Enligt MySQL 5.7 Reference Manual ,
Du bör inte använda ett alias i WHERE-satsen eftersom aliaset genereras när frågan körs och kanske inte är redo när WHERE-villkoret körs. Du får alias är okänt kolumnfel eftersom MySQL inte är medveten om aliaset förrän efter att det har genererats som ett resultat av frågan. Därför kan du inte använda alias i WHERE-satsen här.
(Tillägg efter fråga redigering)
Du kan få önskat resultat med följande fråga:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Frågeförklaring:I SELECT
sats du bara nämner de kolumner du vill visa, MAX()
funktionen kommer redan att välja de maximala värdena själv (så att du inte behöver en WHERE-sats), och GROUP BY-satsen talar om för resultatet att gruppera alla resultat baserat på id
och sedan url
.