开发者

Why would this SQL error with "Invalid use of group function"?

开发者 https://www.devze.com 2023-01-06 18:22 出处:网络
This is a simple query ran when the user presses logout from my website UPDATE `user_logins` SET `active` = 0

This is a simple query ran when the user presses logout from my website

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

The user_id value is binded in there with PDO.

I get the following exception thrown

Invalid use of group function

Googling around seems to say that it is because I am using an aggregate function in a WHERE clause.

I also found this question on Stack Overfl开发者_开发技巧ow, but playing around with HAVING didn't seem to work for me. I tried replacing the AND with HAVING.

How can I change this query to not use the aggregate (or to use HAVING), but still perform the same functionality?

Thanks a bunch!


You could use ORDER BY and LIMIT:

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

That will put the highest date time for that user first, and the LIMIT 1 will ensure that only the first record gets updated if more than one record matches the query.

0

精彩评论

暂无评论...
验证码 换一张
取 消