Menurut Panduan Referensi MySQL 5.7 ,
Anda tidak boleh menggunakan alias dalam klausa WHERE karena alias dibuat saat menjalankan kueri dan mungkin tidak siap saat kondisi WHERE dijalankan. Anda mendapatkan alias tidak diketahui kesalahan kolom karena MySQL tidak mengetahui alias sampai setelah dihasilkan sebagai hasil dari kueri. Oleh karena itu Anda tidak dapat menggunakan alias dalam klausa WHERE di sini.
(Penambahan setelah edit pertanyaan)
Anda bisa mendapatkan hasil yang diinginkan dengan kueri berikut:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Penjelasan Kueri:Dalam SELECT
klausa Anda hanya menyebutkan kolom yang ingin Anda tampilkan, MAX()
fungsi sudah akan memilih nilai maksimum itu sendiri (jadi Anda tidak memerlukan klausa WHERE), dan klausa GROUP BY memberitahu hasil untuk mengelompokkan semua hasil berdasarkan id
lalu url
.