1

当我执行查询(使用 Group BY)以获取结果时,Mysql 返回以下错误

错误代码:1055

SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“project.ws_images.wi_id”;这与 sql_mode=only_full_group_by 不兼容

我想按MONTH获得分组结果。我已经搜索过它并找到了一些解决方案,但仍然面临这个问题。到目前为止我已经尝试过

SELECT * FROM `ws_images` WHERE wi_type = 'image' GROUP BY MONTH(date_added);
 SELECT * FROM `ws_images` WHERE wi_type = 'image' GROUP BY DATE_FORMAT(date_added, '%Y%m');

以上两个查询都返回了我已经提到的相同错误。有人可以指导我可以解决的问题在哪里。如果有人指导我,我将不胜感激。

在此处输入图像描述

4

2 回答 2

1

您正在使用没有聚合功能的 group by .. mysql 5.7 中的这种行为是不允许的,您应该 ONLY_FULL_GROUP_BY 在设置中取消sql_mode 设置。

如果您不需要重复值,您应该明确地在 select 子句中分配您需要的列名,最终使用 distinct(没有 group by)。

否则,您应该明确分配列和聚合函数。注意将不在聚合函数中的列分配给分组子句

于 2017-02-21T12:17:06.787 回答
0

mysql中,您应该设置sql_modeONLY_FULL_GROUP_BY执行您在 op 中提到的查询。或者您只能选择group by子句中的列和一些聚合列。

于 2017-02-21T12:08:12.260 回答