写一个分组查询 sql 的时候遇到了Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'work_ad.api_community_pic.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=
only_full_group_by的问题
sql如下:
SELECT
count(*) as count,
vt.name as name
FROM
t_viola v
LEFT JOIN t_viola_type vt
ON v.type = vt.viola_type
WHERE DATE_FORMAT(v.create_time,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m')
GROUP BY v.type
有vt.name就不行,把vt.name去掉就行。原因是group by 字段是根据v.type来的,查的时候查 vt.name 时就不行。
解决方案:
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' ;
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' ;