Ifølge MySQL 5.7 Reference Manual ,
Du bør ikke bruge et alias i WHERE-sætningen, da aliaset genereres ved kørsel af forespørgslen og muligvis ikke er klar, når WHERE-betingelsen udføres. Du får alias er ukendt kolonnefejl, fordi MySQL ikke er opmærksom på aliaset før efter det er genereret som et resultat af forespørgslen. Derfor kan du ikke bruge alias i WHERE-sætningen her.
(Tilføjelse efter redigering af spørgsmål)
Du kan få det ønskede resultat med følgende forespørgsel:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Forespørgsel Forklaring:I SELECT
klausul, du nævner kun de kolonner, du ønsker at vise, MAX()
funktionen vil allerede selv vælge de maksimale værdier (så du behøver ikke en WHERE-sætning), og GROUP BY-sætningen fortæller resultatet at gruppere alle resultater baseret på id
og derefter url
.