解决 sql_mode=only_full_group_by问题

1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'll.名称' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

image.png


mysql> select @@GLOBAL.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set

mysql> select @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
| NO_ZERO_IN_DATE   |
+-------------------+
1 row in set

mysql> select id,ll.名称 from (select dt1.id, dt1.name,dt1.age,dt2.名称 from (select id2 as id ,name,mama,daidai,null as age from t1 union select id, null as name ,null as mama ,null as daidai ,age from t2 limit 10) as dt1 left join shj1 as dt2 on dt1.id= dt2.序 ) as ll where id >0  group by id order by id;
+-------+-----------+
| id    | 名称      |
+-------+-----------+
|     1 |  冠中生态 |
|     2 |  建工修复 |
|     3 |  实朴检测 |
| 99999 | NULL      |
+-------+-----------+
4 rows in set


select id,ll.名称 

from 

(select dt1.id, dt1.name,dt1.age,dt2.名称 from 

    (select id2 as id ,name,mama,daidai,null as age from t1 union select id, null as name ,null as mama ,null as daidai ,age from t2 limit 10) as dt1 

    left join shj1 as dt2 on dt1.id= dt2.序 ) as ll 

where id >0 

group by id order by id;


暂无留言,赶快评论吧

欢迎留言