Версия сервера: 5.6.38 - Сервер сообщества MySQL (GPL)
Версия PHP: 7.2.1
PHPMyAdmin: информация о версии: 4.7.7
Это мой запрос mysql
SELECT r.id, r.url, MAX(date) as 'max_date', date
FROM report as r
WHERE max_date = date
GROUP BY id, url
ORDER BY bid DESC;
Я хотел получить результат maxdate.
Я уже пробовал, Having
и Between
ним просто не работает. Псевдоним - неизвестный столбец
То, что я пытаюсь сделать,
Я хочу получить самую последнюю дату URL-адреса.
Пример:
id, url, date
1, facebook.com, jan 1, 2018
2, google.com, jan 2, 2018
3, facebook.com, янв. 5, 2018
4, youtube.com, jan 6, 2018
5, youtube.com, jan 1, 2018
6, stackoverflow.com, jan 7, 2018
7, stackoverflow.com, jan 8, 2018
Запустив запрос, он должен получить,
3, facebook.com, янв. 5, 2018
2, google.com, jan 2, 2018
4, youtube.com, jan 6, 2018
7, stackoverflow.com, jan 8, 2018
Согласно Справочному руководству MySQL 5.7,
Стандартный SQL запрещает ссылки на псевдонимы столбцов в предложении WHERE
Вы не должны использовать псевдоним в предложении WHERE, поскольку псевдоним генерируется при запуске запроса и может не быть готов при выполнении условия WHERE. Вы получаете псевдоним - это неизвестная ошибка столбца, потому что MySQL не знает псевдоним до тех пор, пока он не будет создан в результате запроса. Поэтому вы не можете использовать псевдоним в предложении WHERE здесь.
(Добавление после редактирования вопроса)
Вы можете получить желаемый результат по следующему запросу:
SELECT r.id, r.url, MAX(date) as 'max_date'
FROM report as r
GROUP BY id, url;
Query Explanation: В предложении SELECT
вы указываете только столбцы, которые хотите отобразить, функция MAX()
уже сама выбирает самые максимальные значения (так что вам не нужно предложение WHERE), а предложение GROUP BY сообщает, что результат группирует все результаты основаны на id
и затем url
.
WHERE date = Max(date)
?