You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在only_full_group_by模式下编写合法SQL查询解决聚合报错

解决only_full_group_by模式下的聚合查询报错问题

报错原因是sql_mode=only_full_group_by的约束规则:在包含MAX、MIN这类聚合函数的查询中,SELECT列表里的非聚合列必须出现在GROUP BY子句中,或者通过函数与聚合列绑定,否则数据库无法确定要返回哪一行的非聚合列值。

根据你要获取对应最大original_id的created值的需求,可通过以下方法修正查询:

方法1:子查询匹配最大original_id

适用于所有MySQL版本,先找到最大的original_id,再查询对应记录的created值:

SELECT original_id, created 
FROM search_results 
WHERE original_id = (SELECT MAX(original_id) FROM search_results);

方法2:使用窗口函数(MySQL 8.0及以上版本)

通过窗口函数给记录按original_id降序排名,取排名第一的记录:

SELECT original_id, created
FROM (
    SELECT original_id, created,
           RANK() OVER(ORDER BY original_id DESC) AS rank_num
    FROM search_results
) ranked_results
WHERE rank_num = 1;
  • 若存在多条记录拥有相同的最大original_id,RANK()会返回所有符合条件的记录;
  • 若只想返回其中一条,可替换为ROW_NUMBER() OVER(ORDER BY original_id DESC, created DESC)(可根据实际需求调整排序字段)。

方法3:对created使用聚合函数(谨慎使用)

如果你仅需要created字段的最大值/最小值(而非对应最大original_id的那个值),可以给created也添加聚合函数:

SELECT MAX(original_id), MAX(created) 
FROM search_results;

注意:这种方法返回的MAX(created)可能和最大original_id不属于同一条记录,仅在你明确需要聚合后的created值时使用。

内容的提问来源于stack exchange,提问作者user2219963

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:17:06