Secondo Manuale di riferimento di MySQL 5.7 ,
Non dovresti usare un alias nella clausola WHERE poiché l'alias viene generato durante l'esecuzione della query e potrebbe non essere pronto quando viene eseguita la condizione WHERE. Ottieni alias è un errore di colonna sconosciuto perché MySQL non è a conoscenza dell'alias fino a quando non viene generato come risultato della query. Pertanto non è possibile utilizzare l'alias nella clausola WHERE qui.
(Aggiunta dopo la modifica della domanda)
È possibile ottenere il risultato desiderato con la seguente query:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Spiegazione della query:In SELECT
clausola menzioni solo le colonne che vuoi visualizzare, il MAX()
la funzione selezionerà già i valori massimi stessa (quindi non è necessaria una clausola WHERE) e la clausola GROUP BY dice al risultato di raggruppare tutti i risultati in base a id
e poi url
.