Theo Hướng dẫn Tham khảo MySQL 5.7 ,
Bạn không nên sử dụng bí danh trong mệnh đề WHERE vì bí danh được tạo khi chạy truy vấn và có thể không sẵn sàng khi điều kiện WHERE thực thi. Bạn nhận được bí danh là lỗi cột không xác định vì MySQL không biết bí danh cho đến sau khi nó được tạo ra do kết quả của truy vấn. Do đó, bạn không thể sử dụng bí danh trong mệnh đề WHERE ở đây.
(Bổ sung sau chỉnh sửa câu hỏi)
Bạn có thể nhận được kết quả mong muốn với truy vấn sau:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
Giải thích Truy vấn:Trong SELECT
mệnh đề bạn chỉ đề cập đến các cột bạn muốn hiển thị, MAX()
hàm sẽ tự chọn các giá trị lớn nhất (vì vậy bạn không cần mệnh đề WHERE) và mệnh đề GROUP BY cho biết kết quả để nhóm tất cả các kết quả dựa trên id
rồi đến url
.