您的当前位置:首页正文

mySql group by 报错 ,only_full_group_by ???

2024-11-08 来源:个人技术集锦

下面就是报错信息:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database.table.column' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 

原因是:
mysql 5.7以后的版本数据库的默认模式设置成了 only_full_group_by模式,而在执行的sql里有一些重复的行group by 的时候mysql 不知道选择哪一个行。

解决方案:
1:使用any_value() 包括具体提示的列名,使mysql 不再纠结与具体哪一个列。
2: 把sql_mode 改成非only_full_group_by模式(如果是刚开发项目,且 ,对于项目有深入了解后 ,进行可行性分析后 再改,一般不建议)
3:把sql 优化 ,对于每一个分组的元素 清晰的告知mysql 需要怎么选择。

实例操作:

SELECT
      ANY_VALUE(a.name) AS `name`,
      ANY_VALUE(gbs.standard_picture) AS standardPicture,
      ANY_VALUE(gbs.group_by_price) AS groupByPrice,
      ANY_VALUE(gbs.store_number) AS storeNumber
    FROM
      group_buy a
    LEFT JOIN group_buy_standard gbs ON a.group_buy_id = gbs.group_by_id
    WHERE gbs.standard_id = #{standardId}
    GROUP BY gbs.group_by_id
显示全文