【问题标题】:Why would this SQL error with "Invalid use of group function"?为什么这个 SQL 错误会出现“Invalid use of group function”?
【发布时间】:2010-07-13 00:17:05
【问题描述】:

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

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

user_id 值在其中与 PDO 绑定。

我得到以下异常抛出

组函数的使用无效

Googling around 似乎说这是因为我在WHERE 子句中使用了聚合函数。

我也发现了这个question on Stack Overflow,但玩弄HAVING 似乎对我没有用。我尝试用HAVING 替换AND

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

非常感谢!

【问题讨论】:

    标签: php sql mysql pdo mysql-error-1111


    【解决方案1】:

    您可以使用ORDER BYLIMIT

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

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

    【讨论】:

    • 谢谢伙计,另外,点击您的网站让我意识到几个月前我阅读并喜欢您的 WordPress 文章,谢谢!
    • 没有问题,很高兴它有帮助。是的,当我写这篇文章时,我对 WP 感到非常沮丧。哈...美好的时光。
    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多