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)) 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值