当我执行查询(使用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');
以上两个查询都返回了我已经提到的相同错误。有人可以指导我可以解决的问题在哪里。如果有人指导我,我很感激。
答案 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
子句和一些聚合列中选择列。