zoukankan      html  css  js  c++  java
  • (pymysql.err.OperationalError) (1055, "Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    使用 GROUP BY 报1055错误

    情况:

    db.session.query(QJScenicHeartbeat.userId, QJScenicHeartbeat.longitude,
                              QJScenicHeartbeat.latitude, QJScenicHeartbeat.time, QJScenicUser.nickname,
                              QJScenicUser.avatar).select_from(
        QJScenicHeartbeat, QJScenicUser).filter(
        QJScenicHeartbeat.areaId == areaId, QJScenicHeartbeat.time >= nowTime - area.timeout,
        QJScenicHeartbeat.time <= nowTime, QJScenicHeartbeat.userId == QJScenicUser.uuid).group_by(
        QJScenicHeartbeat.userId).order_by(desc(QJScenicHeartbeat.time)).all()]

    代码解释:

      查了一些字段,从俩表里,按照userid分组,排序,然后报错

    only_full_group_by说明:
    only_full_group_by :默认规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 

    解决办法:

    5.7
    
    mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
    mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
     
    
    8.0
    
    mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
    mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    

      

    这两个命令,去掉 sql_mode 的 ONLY_FULL_GROUP_BY

    参考自:https://blog.csdn.net/fansili/article/details/78664267

  • 相关阅读:
    C++互斥器:Semaphores
    C++互斥器:Mutex
    内联函数(inline)
    C++显式转换
    线程同步控制
    拷贝构造函数——防篡改
    extern关键字
    虚析构、纯虚析构
    类的友元关系
    char 与 unsigned char的本质区别
  • 原文地址:https://www.cnblogs.com/zhoulangshunxinyangfan/p/14463505.html
Copyright © 2011-2022 走看看