Почему эта ошибка SQL с «Неправильное использование групповой функции»? - PullRequest
2 голосов
/ 13 июля 2010

Это простой запрос, запускаемый, когда пользователь нажимает logout с моего веб-сайта.

UPDATE `user_logins` 
   SET `active` = 0 
 WHERE `user_id` = 3 
   AND `datetime` = MAX(`datetime`) LIMIT 1

. Значение user_id связывается там с PDO.

Я получаю следующее исключение:

Неправильное использование групповой функции

Поиск в Google , кажется, говорит, что это потому, что я использую статистическую функциюв предложении WHERE.

Я также нашел этот вопрос о переполнении стека , но игра с HAVING, похоже, не работала для меня.Я попытался заменить AND на HAVING.

Как изменить этот запрос, чтобы не использовать агрегат (или использовать HAVING), но при этом выполнять те же функции?

Спасибо большое!

1 Ответ

3 голосов
/ 13 июля 2010

Вы можете использовать ORDER BY и LIMIT:

UPDATE `user_logins` SET `active` = 0
WHERE `user_id` = 3
ORDER BY `datetime` DESC
LIMIT 1;

. Сначала будет назначено наибольшее время для этого пользователя, а LIMIT 1 обеспечит обновление только первой записи, еслиболее одной записи соответствует запросу.

...