Как исправить неизвестный столбец MySQL Query Alias? 2018

0

Версия сервера: 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

  • 0
    Вы генерируете псевдоним max_date и используете его в том же запросе. Псевдоним создается при выполнении запроса, поэтому его не следует использовать в условии с предложением WHERE.
  • 1
    возможно, WHERE date = Max(date) ?
Показать ещё 3 комментария
Теги:

1 ответ

2

Согласно Справочному руководству 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.

  • 0
    Я отредактировал предложение where для Max (date)
  • 0
    Теперь я это очень хорошо понимаю. Хорошо, позвольте мне объяснить больше, через некоторое время.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню