无法在包含GROUP BY的查询中进行CONCAT

时间:2016-11-10 17:10:06

标签: mysql

我有以下查询(省略了相关部分):

           SELECT DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ') formatted_calc_dt,
                  CONCAT(DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ'), '')
             FROM calc_calculation_results
         GROUP BY formatted_calc_dt
  

错误代码:1055。SELECT列表的表达式#2不在GROUP BY子句中,并且包含非聚合列' my_database_name.calc_calculation_results.calc_dt'它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

挑战是:

  • 我需要将格式calc_dt与其他内容联系起来
  • 我需要根据此查询创建一个视图,因此我无法使用子查询

如果有帮助,分组的目的是按小时对日期进行分组。

有什么方法可以得到我想要的东西吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

    SELECT DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ') formatted_calc_dt,
              CONCAT(DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ'), '')
    FROM calc_calculation_results
    GROUP BY DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ')

答案 1 :(得分:0)

我最终这样做了:

SELECT DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ') formatted_calc_dt,
                  CONCAT(DATE_FORMAT(calc_dt, '%Y-%m-%dT%TZ'), '')
             FROM calc_calculation_results
         GROUP BY calc_dt

这是有效的,因为我的数据库中的日期只存储在精确的小时数,而不是几分钟或几秒。

我意识到这个查询并没有像现在这样有意义。当涉及其他列时更有意义。希望这很清楚。