这个问题的原因是,在这种模式下,sql分组时默认只能select + 分组字段以及聚合函数,相当于做一个规范检查
但很多时候并不需要这个检查,因为真实sql中,分组后很多字段是1对1的,比如分组id,那么其他字段都可以查出来才对
这是可以修改一下这种配置,基本上有三种方式:
1、修改sql的配置文件
一下为mysql的例子
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
2、写sql修改
SELECT @@sql_mode;
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));
3、在jdbc连接中指定sql_mode方式
url: jdbc:mysql://127.0.0.1:3306/wms_new?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&jdbcCompliantTruncation=false&sessionVariables=explicit_defaults_for_timestamp=OFF,group_concat_max_len=2048,sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE'
作者:万能包哥 出处:http://www.cnblogs.com/mybloger/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |