【问题标题】:Error related group by when executing query in mysql在mysql中执行查询时出现错误相关组
【发布时间】:2017-07-11 01:07:26
【问题描述】:

当我执行查询(使用 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');

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

【问题讨论】:

  • select *group by 的使用说明对SQL 缺乏了解。您应该同时提供示例数据和所需结果,因为您的查询毫无意义。
  • @GordonLinoff 抱歉,请强调我的要求。我需要 MONTH 的所有结果组
  • @Mr.Developer 。 . .当您想要所有其他列时,group by MONTH 没有意义。 group by 通常与聚合函数一起使用。
  • 如果您想在输出中直观地对结果进行分组,您应该改用ORDER BY,并在构建视图时根据需要对结果进行分组。 sql 中的GROUP BY 并没有按照你的想法去做。

标签: mysql sql mysql-error-1055


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢你的解释
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 2020-07-30
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2012-02-22
    • 2012-11-04
    相关资源
    最近更新 更多