在mysql

时间:2017-02-21 12:03:05

标签: mysql sql mysql-error-1055

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

  

错误代码:1055

     

SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'project.ws_images.wi_id',这是   在功能上不依赖于GROUP BY子句中的列;这是   与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');

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

enter image description here

2 个答案:

答案 0 :(得分:1)

您正在使用没有聚合功能的组..不允许在mysql 5.7中使用此行为,您应该在ONLY_FULL_GROUP_BY设置中取消设置sql_mode

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

否则你应该明确地分配列和聚合函数。小心将不在聚合函数中的列分配给group by子句

答案 1 :(得分:0)

mysql中,您应该设置sql_mode而不是ONLY_FULL_GROUP_BY来执行您在操作中提到的查询。或者您只能在group by子句和一些聚合列中选择列。