首页  >  问答  >  正文

mysql 报错,不太懂

迷茫迷茫2742 天前626

全部回复(5)我来回复

  • PHP中文网

    PHP中文网2017-04-17 16:19:16

    正常select后面的字段只能是group by中的字段或者是聚合函数,例如:

    select a,max(b) from t group by a;

    但你会发现,有时别人的mysql是这样写的,

    select a,b,max(c) from t group by a;

    为什么别人不报错呢?
    注意看下报错提示的最后一句sql_mode=only_full_group_by
    sql_mode是用来检查SQL语句的合法性,当配置为only_full_group_by时,select字段要么是来自于聚集函数的结果,要么是来自于group by后中的字段值。
    因此,如果你想保证原来sql正常执行,可以去修改下my.cnf的配置,把sql_mode=only_full_group_by注释掉,在前面加#号

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:19:16

    你 groupby ymf.u.uid 但是没有放进select的字段里吧?

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:19:16

    将sql一起贴出来

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:19:16

    你在使用group by的时候,所要select的字段必须在group by中,聚合查询除外。

    回复
    0
  • 迷茫

    迷茫2017-04-17 16:19:16

    谢邀,方便的话贴一下你的代码,看错误的话应该是 你查询的字段 不在 GROUP BY 里面,详细的话 还是要看你的 sql语句。

    回复
    0
  • 取消回复