参考文章地址:[https://www.cnblogs.com/it66/p/15479695.html](https://www.cnblogs.com/it66/p/15479695.html)

    使用GROUP BY进行分组查询时,抛出异常信息:
    Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'demo.device.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    image.png

    查看是否开启了only_full_group_by规则校验,在数据库中执行如下sql

    1. mysql> SELECT @@GLOBAL.sql_mode;
    2. +-----------------------------------------------------------------------------------------------------------------------+
    3. | @@GLOBAL.sql_mode |
    4. +-----------------------------------------------------------------------------------------------------------------------+
    5. | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
    6. +-----------------------------------------------------------------------------------------------------------------------+
    7. 1 row in set (0.02 sec)
    8. mysql> SELECT @@SESSION.sql_mode;
    9. +-----------------------------------------------------------------------------------------------------------------------+
    10. | @@SESSION.sql_mode |
    11. +-----------------------------------------------------------------------------------------------------------------------+
    12. | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
    13. +-----------------------------------------------------------------------------------------------------------------------+
    14. 1 row in set (0.03 sec)

    关闭only_full_group_by的规则校验,关闭规则校验需要执行如下sql。以下两个sql单引号中的内容是第一步查询的结果去掉ONLY_FULL_GROUP_BY之后的值:

    mysql> set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> set @@SESSION.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    Query OK, 0 rows affected (0.01 sec)
    
    
    mysql> SELECT @@SESSION.sql_mode;
    +----------------------------------------------------------------------------------------------------+
    | @@SESSION.sql_mode                                                                                 |
    +----------------------------------------------------------------------------------------------------+
    | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
    +----------------------------------------------------------------------------------------------------+
    1 row in set (0.03 sec)
    
    mysql> SELECT @@GLOBAL.sql_mode;
    +----------------------------------------------------------------------------------------------------+
    | @@GLOBAL.sql_mode                                                                                  |
    +----------------------------------------------------------------------------------------------------+
    | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
    +----------------------------------------------------------------------------------------------------+
    1 row in set (0.04 sec)
    

    重启数据库,登录数据库所在的服务器执行如下命令:

    service mysqld start;
    

    解决后
    image.png