下面就是报错信息:
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