问题背景
在实际业务场景中,我们有时会对某些字段进行分组统计,并且需要查出多余字段展示。比方说根据机构id统计每个机构下有多少部门,字段展示机构名称、部门数量、机构id。
这时会提示查询的字段必须得在group by子句中,否则无法执行。
解决方案
- 使用any_value,屏蔽严格模式(Oracle、MySql都可)。
- 使用max()或者min函数(Oracle、MySql都可)。
- 修改sql_mode或修改配置文件(仅MySql)。
先查看@@sql_mode模式,看是否开启了only_full_group_by 严格模式。
本人本地的Mysql未开启,如果开启的话,而你又想屏蔽严格模式,则执行下列语句即可。
-- 屏蔽严格模式
set @@sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
-- 查询@@sql_mode
select @@sql_mode