mysql的only_full_group_by

点击统计分析时突然交易统计报错,原来一直正常,看了错误代码,发现mysql报错,错误代码如下:

Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'XXX.T_XXX.PAY_FINISH_DATE' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by。

网上看了一下资料,了解了大致错误原因是:sql中出现了group by 且select的列中没有group by 的字段,将group by 的字段去掉就正常。为什么这样呢?这就是因为mysql的配置文件中my.ini(windows)文件的sql-moel=“ONLY_FULL_GROUP_BY,....”,出现了的ONLY_FULL_GROUP_BY,将此配置去掉就正常查询,网上看见也可以通过SET GLOBAL sql_mode = ''的方式,由于mysql在服务器上不是本地,所以采用了第二种方式,但发现还是会有问题。

解决方法:

1.查看mysql的sql-model配置:

SELECT @@SESSION.sql_mode;

SELECT @@GLOBAL.sql_mode;

2.建议在1的基础上copy查询出来的值,去掉ONLY_FULL_GROUP_BY,在SET sql_mode = ‘去掉ON..BY后的值’,在执行SET GLOBAL sql_mode = ''。经过这两步操作,此时统计成功查询出来。

下面是我的sql:

SELECT SUM(ORDER_QTY) AS ORDER_QTY,SUM(ORDER_AMOUNT) AS SETTLE_AMOUNT, PAY_FINISH_DATE FROM T_ORDER WHERE ( DELETE_FLAG = 0 GROUP BY CONCAT(YEAR(PAY_FINISH_DATE),MONTH(PAY_FINISH_DATE),DAY(PAY_FINISH_DATE)) 

 

你可能感兴趣的:(数据库)