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

GROUP BY失效问题:SQL查询报错#1055的原因排查

解决MySQL GROUP BY报错#1055的问题

嘿,这个问题我之前踩过同款坑,咱们好好唠明白~

错误核心原因

你碰到的#1055错误,根源是MySQL默认开启了ONLY_FULL_GROUP_BY这个SQL模式。这个模式的规则相当严格:SELECT列表里的每一列,要么出现在GROUP BY子句中,要么被聚合函数(比如MAX()、MIN()、COUNT()这类)包裹。

你写的SELECT * FROM posts GROUP BY article_id,SELECT *会返回posts表的所有列(id、name、article_id),但GROUP BY只指定了article_id。对于同一article_id下的多条帖子,MySQL根本不知道该返回哪一条的id和name值——总不能随便挑一条糊弄吧?所以它直接抛出了错误。

结合你的需求修正SQL

看你的描述,你实际需求是获取所有posts数据并按article_id排序,这完全不需要用GROUP BY啊!GROUP BY是用来做分组统计(比如统计每个文章下有多少帖子)的,而你要的是全量帖子按article_id排序,直接用ORDER BY就够了:

SELECT * FROM posts ORDER BY article_id;

如果你的真实需求其实是每个文章只取一条关联的帖子(比如最新发布的那一条),那才需要用到GROUP BY配合聚合函数或者窗口函数。举两个实用的例子:

方法1:子查询+聚合函数(兼容低版本MySQL)

SELECT * 
FROM posts 
WHERE id IN (
    SELECT MAX(id) 
    FROM posts 
    GROUP BY article_id
);

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

SELECT id, name, article_id
FROM (
    SELECT *, 
           ROW_NUMBER() OVER (PARTITION BY article_id ORDER BY id DESC) AS rn
    FROM posts
) t
WHERE rn = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:38:55