2

这是当用户从我的网站按注销时运行的一个简单查询

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

user_id值与 PDO 绑定在那里。

我收到以下异常

组功能使用无效

谷歌搜索似乎说这是因为我在WHERE子句中使用了聚合函数。

我也在Stack Overflow 上找到了这个问题,但玩弄HAVING似乎对我没有用。我试着ANDHAVING.

如何更改此查询以不使用聚合(或使用HAVING),但仍执行相同的功能?

非常感谢!

4

1 回答 1

3

你可以使用ORDER BYand LIMIT

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

这将把该用户的最高日期时间放在首位,并且LIMIT 1如果有多个记录与查询匹配,则将确保仅更新第一条记录。

于 2010-07-13T00:20:22.527 回答